形式参数“@mode”未声明为OUTPUT参数,而是在请求的输出中传递的实际参数

时间:2015-08-26 06:47:57

标签: sql sql-server-2008-r2

我有这个存储过程:

ALTER PROCEDURE spCertificationType 
    @result nvarchar(15) output,
    @mode int 
AS
BEGIN
    if @mode = 1
    begin
        exec spGeneratedID 2, @result output
        print @result
    end
END

但是当我尝试执行它时,它有这个错误

  

形式参数“@mode”未声明为OUTPUT参数,而是在请求的输出中传递的实际参数。

我尝试将@mode设置为如下输出:

ALTER PROCEDURE spCertificationType 
    @result nvarchar(15) output,
    @mode int output
AS
BEGIN
    if @mode = 1
    begin
        exec spGeneratedID 2, @result output
        print @result
    end
END

但它返回一个空值。

对此有何修复?提前谢谢。

2 个答案:

答案 0 :(得分:8)

存储过程中的参数序列是首先使用输入参数然后使用输出参数: - 您可以通过此链接查看有关商店程序的更多信息: -

http://www.codeproject.com/Articles/126898/Sql-Server-How-To-Write-a-Stored-Procedure-in-SQL

ALTER PROCEDURE spCertificationType 

     @mode int,
     @result nvarchar(15) output
 AS
 BEGIN
     if @mode = 1
   begin
    exec spGeneratedID 2, @result output
    print @result
   end
END

答案 1 :(得分:1)

我以不同的方式修复了这个错误。

  1. 我在SP中的参数后删除了OUTPUT语句。
  2. 然后我得到了错误。
  3. 然后我回到SQLDataSource配置数据源向导并再次执行这些步骤。我发现更改SP使向导删除了与之后具有OUTPUT的参数关联的设置。