use*_*673 4 sql-server stored-procedures dynamic-sql output
我正在OUTPUT使用动态 SQL调用带有参数的存储过程。
set @cSql='EXEC '+@cName+'.dbo.uspNDateGet '''
+convert(varchar(10),@dtAsOn,102)+''','''
+@cBr+''','''
+@cLCode+''','''
+convert(varchar(10),@dtNDate,102)+''' OUTPUT'
exec(@cSql)
Run Code Online (Sandbox Code Playgroud)
在执行脚本时,我收到以下错误。
OUTPUT将常量传递给存储过程时不能使用该选项。
在不使用动态 SQL 的情况下,脚本给了我所需的结果。
EXEC uspNDateGet @dtAsOn,@cBr,@cLCode,@dtNDate OUTPUT
Run Code Online (Sandbox Code Playgroud)
您需要将参数从外部传递到内部查询中。
在这里,我向您展示一般情况:
declare @sql nvarchar(max);
declare @Out1 nvarchar(10);
declare @Out2 nvarchar(10);
declare @ParmDef nvarchar(max);
set @ParmDef =
' @Parm_Out1 nvarchar(10) '
+ ', @Parm_Out2 nvarchar(10) ' ;
set @sql='EXEC myproc @Parm_Out1 OUTPUT, @Parm_Out2 OUTPUT '
exec sp_executesql @sql, @ParmDef, @Parm_Out1 = @Out1, @Parm_Out2 = @Out2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6653 次 |
| 最近记录: |