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

标签 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

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

The formal parameter “@mode” was not declared as an OUTPUT parameter, but the actual parameter passed in requested 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

但它返回一个空值。

有什么解决办法吗?提前致谢。

最佳答案

存储过程中的参数顺序是先使用输入参数,然后使用输出参数:-
您可以查看此链接以获取有关存储过程的更多知识:-

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

关于sql - 形参 “@mode” 未声明为 OUTPUT 参数,而是在请求的输出中传递的实参,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32219733/

相关文章:

mysql - 将随机整数插入表中?

c# - 如何从 sql server 播放 mp3 字节 block ,使用 C# 传输到桌面客户端(通过 wcf)?

SQL查询具有一对多关系的两个表

sql-server-2008-r2 - SQL Server 2008 中针对动态列的算术运算符

Powershell Invoke-sqlcmd 保持连接打开并尝试重用它

sql-server - Sql Server 复制需要实际的服务器名称才能连接到服务器

sql - 通过存储过程进行数据库分页

sql - postgresql - 将字符串转换为时间

sql-server-2008-r2 - SQL Server 2008 Service Broker 教程——无法接收消息(transmission_status 中的异常)

sql-server-2008-r2 - SQL Server 查询时的默认数据库 - master