如何在Character String Exec中使用输出参数? 请考虑使用“标准”语法进行以下查询:
DECLARE @testString nvarchar(50);
EXEC testProcedure @param1 = @testString OUTPUT
SELECT 'result ' = @testString
go
如何使用字符串exec重新创建完全相同的结果,
EXEC ( 'testProcedure @param1 = @testString OUTPUT' )
,也不
EXEC ( 'testProcedure @param1 = ' + @testString + ' OUTPUT' )
似乎有效:结果是NULL
或Must declare the scalar variable "@testString"
错误。
答案 0 :(得分:4)
您需要将值作为参数传递。动态SQL在新的上下文中执行,这就是变量在那里不可见的原因。
您应该使用sp_executesql
:
DECLARE @testString nvarchar(50);
EXEC dbo.sp_executesql N'EXEC testProcedure @testString OUTPUT',
N'@testString nvarchar(50) OUTPUT',
@testString OUTPUT;
SELECT 'result ' = @testString;
的 LiveDemo
强>