2016-05-01 8 views
2

Wie verwende ich Ausgabeparameter mit Character String Exec? Betrachten Sie folgende Abfrage mit "Standard" Syntax:SQL Server string exec eine Prozedur mit Ausgabeparameter

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

Wie genau gleiche Ergebnis mit Zeichenfolge exec neu erstellen, weder

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

noch

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

scheint Arbeit: Das Ergebnis ist entweder NULL oder Must declare the scalar variable "@testString" Fehler.

Antwort

4

Sie müssen den Wert als Parameter übergeben. Dynamisches SQL wird in einem neuen Kontext ausgeführt, weshalb die Variable dort nicht sichtbar ist.

sollten Sie sp_executesql verwenden:

DECLARE @testString nvarchar(50); 

EXEC dbo.sp_executesql N'EXEC testProcedure @testString OUTPUT', 
         N'@testString nvarchar(50) OUTPUT', 
         @testString OUTPUT; 

SELECT 'result ' = @testString; 

LiveDemo