Sql server SQL Server存储过程需要未提供的参数
存储过程中的错误: SQL存储过程需要未提供的参数 我犯了这个错误,我真的不明白是什么错了。请尽量说得非常详细Sql server SQL Server存储过程需要未提供的参数,sql-server,tsql,Sql Server,Tsql,存储过程中的错误: SQL存储过程需要未提供的参数 我犯了这个错误,我真的不明白是什么错了。请尽量说得非常详细 我不知道哪个参数没有提供,我应该如何修复它您的存储过程需要五个参数: @i_帮会_代码VARCHAR10 @i_character_name VARCHAR40 @i_贵族代码VARBINARY1 @o_sp_rtn INT输出 @2mx用户号varchar50 过程没有为它们提供默认值。调用代码必须在其sql命令中提供这些参数 如果您是从.NET类调用此函数,则应确保所有参数都包含在
我不知道哪个参数没有提供,我应该如何修复它您的存储过程需要五个参数: @i_帮会_代码VARCHAR10 @i_character_name VARCHAR40 @i_贵族代码VARBINARY1 @o_sp_rtn INT输出 @2mx用户号varchar50 过程没有为它们提供默认值。调用代码必须在其sql命令中提供这些参数 如果您是从.NET类调用此函数,则应确保所有参数都包含在。以下是一个相关问题: 确保设置的.Direction属性
如果直接使用sql脚本运行它们,则需要在执行调用后显式地包含参数。有关示例,请参见。能否发布用于调用此存储过程的代码?SQl Server有一个名为探查器的工具,它将捕获执行过程的SQl调用。我假设大多数数据库都有某种类型的分析应用程序可以使用。如果您捕获了执行proc的请求,您可能会马上看到正在发生的事情。David提出了正确的问题,但我将冒险进行猜测。可能未提供OUT参数。但是错误消息不会指定缺少哪个参数吗?您使用的是哪个版本的SQL Server?如果您使用原始ADO.NET来调用此函数,我猜您缺少command.CommandType=CommandType.storedProcess;SqlCommand的赋值…在调用代码中,确保设置了.Direction属性。
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