I am calling a stored procedure with OUTPUT
parameter using 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)
On executing the script, I get following error.
在执行脚本时,我收到以下错误。
Cannot use the
OUTPUT
option when passing a constant to a stored procedure.将常量传递给存储过程时,无法使用OUTPUT选项。
Without using dynamic SQL, the script gives me the required result.
不使用动态SQL,脚本为我提供了所需的结果。
EXEC uspNDateGet @dtAsOn,@cBr,@cLCode,@dtNDate OUTPUT
1 个解决方案
#1
3
You need to pass parameters from outside into the inside query.
您需要将参数从外部传递到内部查询。
Here I show you the generic case:
在这里,我向您展示一般案例:
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
#1
3
You need to pass parameters from outside into the inside query.
您需要将参数从外部传递到内部查询。
Here I show you the generic case:
在这里,我向您展示一般案例:
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