Sql server 在动态SQL中使用输出参数调用存储过程
我正在使用动态SQL调用一个带有Sql server 在动态SQL中使用输出参数调用存储过程,sql-server,stored-procedures,output,dynamic-sql,Sql Server,Stored Procedures,Output,Dynamic Sql,我正在使用动态SQL调用一个带有OUTPUT参数的存储过程 set @cSql='EXEC '+@cName+'.dbo.uspNDateGet ''' +convert(varchar(10),@dtAsOn,102)+''',''' +@cBr+''',''' +@cLCode+''',''' +convert(varchar(10),@dtNDate,102)+''' OUTPUT' exec(@cSql) 在执行脚本时,我得到以下错误 将常量传递给存储
OUTPUT
参数的存储过程
set @cSql='EXEC '+@cName+'.dbo.uspNDateGet '''
+convert(varchar(10),@dtAsOn,102)+''','''
+@cBr+''','''
+@cLCode+''','''
+convert(varchar(10),@dtNDate,102)+''' OUTPUT'
exec(@cSql)
在执行脚本时,我得到以下错误
将常量传递给存储过程时,无法使用输出
选项
在不使用动态SQL的情况下,脚本为我提供了所需的结果
EXEC uspNDateGet @dtAsOn,@cBr,@cLCode,@dtNDate OUTPUT
您需要将参数从外部传递到内部查询 在这里,我向您展示了一般情况:
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
在动态查询中声明该输出变量。使用带有传递参数的sp_executesql。查找动态sql的输出