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' )
似乎有效:结果是 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;
如何使用 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' )
似乎有效:结果是 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;