won*_*dra 3 sql t-sql sql-server exec
如何在字符串执行中使用输出参数?考虑使用“标准”语法进行以下查询:
DECLARE @testString nvarchar(50);
EXEC testProcedure @param1 = @testString OUTPUT
SELECT 'result ' = @testString
go
Run Code Online (Sandbox Code Playgroud)
如何使用字符串exec重新创建完全相同的结果,既不
EXEC ( 'testProcedure @param1 = @testString OUTPUT' )
Run Code Online (Sandbox Code Playgroud)
也不
EXEC ( 'testProcedure @param1 = ' + @testString + ' OUTPUT' )
Run Code Online (Sandbox Code Playgroud)
似乎有效:结果是NULL或Must declare the scalar variable "@testString"错误。
您需要将该值作为参数传递。动态 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;
Run Code Online (Sandbox Code Playgroud)