我正在尝试将动态执行的存储过程的结果分配给变量。但是,当我打电话给他们时,sql抛出这个错误:
找不到存储过程'exec dbo.cont_com 3611,892;'
以下是我正在使用的代码段:
fetchURLs()
当我放括号并执行存储过程时,它可以正常工作:
declare @procedure_to_call varchar(max);
declare @procedure_result int;
set @procedure_to_call='exec dbo.cont_com 3611,892;'
exec @procedure_result=@procedure_to_call;
但我需要在变量中保存 @procedure_to_call 的返回。
这是 dbo.cont_com SP的示例代码:
exec (@procedure_to_call);
非常感谢任何帮助。
答案 0 :(得分:1)
set @procedure_to_call='exec dbo.cont_com 3611,892;'
exec @procedure_result=@procedure_to_call;
这变为
exec exec dbo.cont_com 3611,892; -- hence the error
exec (@procedure_to_call)
通过将括号中的内容作为自己的活动来解决这个问题
尝试:
set @procedure_to_call='dbo.cont_com 3611,892;'
答案 1 :(得分:1)
尝试这样的事情。
DECLARE @procedure_to_call NVARCHAR(MAX) = 'EXEC @x = dbo.cont_com 3611,892'
DECLARE @procedure_result INT;
SET @procedure_result = 0;
EXEC sp_executesql @procedure_to_call, N'@x INT OUT', @procedure_result OUT;
SELECT @procedure_result
它对我有用,希望它适合你。