SQL 服务器字符串执行带有输出参数的过程

SQL Server string exec a procedure with output parameter

如何使用 Character String Exec 输出参数? 考虑以下使用 "standard" 语法的查询:

DECLARE @testString nvarchar(50);
EXEC testProcedure  @param1 = @testString OUTPUT
SELECT 'result ' = @testString
go

如何重新创建 完全 与字符串 exec 相同的结果,

EXEC ( 'testProcedure @param1 = @testString OUTPUT' )

也不

EXEC ( 'testProcedure @param1 = ' + @testString + ' OUTPUT' )

似乎有效:结果是 NULLMust 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;

LiveDemo