SQL Server字符串执行带有输出参数的过程

时间:2016-05-01 14:59:48

标签: sql sql-server tsql exec

如何在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' )

似乎有效:结果是NULLMust declare the scalar variable "@testString"错误。

1 个答案:

答案 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