【发布时间】:2013-05-09 07:31:53
【问题描述】:
CREATE PROCEDURE dbo.SP_GUILD_CHAR_CREATE
@i_guild_code VARCHAR(10) , --길드코드
@i_character_name VARCHAR(40) , --캐릭터명
@i_peerage_code VARBINARY(1) , --작위코드
@o_sp_rtn INT OUTPUT , --실행결과
@2mx_user_no varchar(50)
AS
DECLARE
@v_max_char_cnt int, --한길드당 최대 길드원 수
@v_row_cnt int
BEGIN
SET NOCOUNT ON
SET @o_sp_rtn = -1
SET @v_max_char_cnt = 50
--입력값 검증
IF @i_guild_code IS NULL OR
@i_character_name IS NULL OR
@i_peerage_code IS NULL BEGIN
SET NOCOUNT OFF
SET @o_sp_rtn = -1
RETURN
END
--길드중복가입 검사.
IF EXISTS( SELECT 1
FROM dbo.GUILD_CHAR_INFO WITH(NOLOCK)
WHERE character_name = @i_character_name )
BEGIN
SET NOCOUNT OFF
SET @o_sp_rtn = -2
RETURN
END
--한길드당 최대 길드원 수 검증
SELECT @v_row_cnt = count(*)
FROM dbo.GUILD_CHAR_INFO WITH(NOLOCK)
WHERE guild_code = @i_guild_code
IF @@Error <> 0 BEGIN
SET NOCOUNT OFF
SET @o_sp_rtn = -3
RETURN
END
IF @v_max_char_cnt <= @v_row_cnt BEGIN
SET NOCOUNT OFF
SET @o_sp_rtn = -4
RETURN
END
--길드원 등록
SET @2mx_user_no = (SELECT user_no FROM user_character
WHERE character_name = @i_character_name)
BEGIN TRAN
INSERT INTO dbo.GUILD_CHAR_INFO
(
guild_code ,
character_name ,
peerage_code ,
ipt_time ,
upt_time ,
user_no
)
VALUES(
@i_guild_code ,
@2mx_user_no ,
@i_character_name ,
ISNULL(CAST(@i_peerage_code AS smallint), 9) ,
getdate() ,
getdate()
)
IF @@Error <> 0
BEGIN
ROLLBACK TRAN
SET NOCOUNT OFF
SET @o_sp_rtn = -9
RETURN
END
COMMIT TRAN
SET NOCOUNT OFF
SET @o_sp_rtn = 0
END
GO
存储过程出错:
SQL 存储过程需要参数,但未提供。
我收到了这个错误,我真的不明白它出了什么问题。请尽量详细。
我不知道哪个参数没有提供,我应该如何修复它
【问题讨论】:
-
你能贴出你用来调用这个存储过程的代码吗?
-
SQl Server 有一个称为 Profiler 的东西,它将捕获执行 proc 的 sql 调用。我假设大多数数据库都有他们可以使用的某种类型的分析应用程序。如果您捕获执行 proc 的请求,您可能会立即看到磨损的情况。
-
大卫提出了正确的问题,但我会冒险猜测。可能未提供 OUT 参数。但是错误消息不会指定缺少哪个参数吗?您使用的是什么版本的 SQL Server?
-
如果你使用“原始”ADO.NET 来调用它,我猜你错过了
command.CommandType = CommandType.StoredProcedure;分配给你的SqlCommand...
标签: sql-server tsql