相关疑难解决方法(0)

如何将输出参数传递给存储过程?

我用以下格式编写了一个存储过程:

ALTER PROCEDURE usp_data_migration 
   (@sourceDatabase varchar(50),
    @sourceTable varchar(50),
    @targetDatabase varchar(50),
    @targetTable varchar(50),
    @finaloutput varchar(max) output)
AS
BEGIN
----Set of SQL Blocks


END
Run Code Online (Sandbox Code Playgroud)

然后,我正在执行程序:

DECLARE @finaloutput1 varchar(300)

EXEC usp_data_migration 'Yousuf', 'emp', '[City Branch]', 'emp_tgt', @finaloutput1 output 

SELECT @finaloutput1 
Run Code Online (Sandbox Code Playgroud)

通过这种方式执行我没有正确的输出.

当我执行这种方式时:

DECLARE @finaloutput1 varchar(300)

EXEC usp_data_migration @sourceDatabase = 'Yousuf',
                        @sourceTable = 'emp',
                        @targetDatabase = '[City Branch]',
                        @targetTable = 'emp_tgt',
                        @finaloutput1 output 

SELECT @finaloutput1 
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

消息119,级别15,状态1,行41
必须将参数编号5和后续参数作为"@name = value"传递.在使用"@name = value"形式之后,必须以"@name = value"形式传递所有后续参数.

如果我删除了输出参数并执行了该过程,我得到了我想要的输出但是我无法将结果作为输出.

EXEC usp_data_migration @sourceDatabase = 'Yousuf',
                        @sourceTable = 'emp',
                        @targetDatabase …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server stored-procedures output-parameter output

8
推荐指数
2
解决办法
7万
查看次数