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

2023-12-22

我编写了一个存储过程,格式如下:

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

然后,我正在执行程序:

DECLARE @finaloutput1 varchar(300)

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

SELECT @finaloutput1 

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

当我这样执行时:

DECLARE @finaloutput1 varchar(300)

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

SELECT @finaloutput1 

我收到一条错误消息:

消息 119,第 15 级,状态 1,第 41 行
必须以“@name = value”的形式传递参数号 5 和后续参数。使用“@name = value”形式后,所有后续参数都必须以“@name = value”形式传递。

如果我删除输出参数并执行该过程,我会得到所需的输出,但无法将结果作为输出。

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

我应该怎么办?

提前致谢。


错误消息是不言自明的 - 您应该命名所有参数。

DECLARE @finaloutput1 varchar(300);

EXEC dbo.usp_data_migration -- always use schema prefix
  @sourceDatabase = 'Yousuf',
  @sourceTable = 'emp',
  @targetDatabase = '[City Branch]',
  @targetTable = 'emp_tgt',
  @finaloutput = @finaloutput1 OUTPUT;

SELECT @finaloutput1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将输出参数传递给存储过程? 的相关文章

随机推荐