Wenig Hintergrundinformationen:Führen Sie openrowset gespeicherte Prozedur, Parameter verwenden
Ich habe eine gespeicherte Prozedur, nennen wir es SP1. SP1 ruft eine andere gespeicherte Prozedur auf: SP2. SP2 ruft eine andere gespeicherte Prozedur auf: SP3.
Jetzt gibt die erste gespeicherte Prozedur (SP1) eine Ergebnismenge zurück. Die Ergebnismenge sind Parameter für SP2, dies geschieht mit einem Cursor.
Aufgrund dieser verschachtelten Einfügungen und ausgeführt, muss ich eine Openrowset dynamische SQL-Zeichenfolge verwenden, um meine gespeicherten Prozeduren auszuführen.
Dies ist meine Frage:
DECLARE @P_Source varchar(255) = 'test'
DECLARE @P_Location varchar(255) = 'test'
DECLARE @sql varchar(max)
SET @sql = 'INSERT INTO #tmp
SELECT *
FROM OPENROWSET (
''SQLOLEDB'',
''Server=(local);TRUSTED_CONNECTION=YES;'',
''set fmtonly off
EXECUTE dbo.SP1
@P_Source = '''''[email protected]_Source+'''''''
,@P_Location = '''''[email protected]_Location+'''''''
)'
exec(@sql)
(Ich habe natürlich die Tabelle #tmp erstellt). Ich habe mehr Parameter um genau zu sein (12), alles Varchar, aber ich habe sie weggelassen, um es nicht unordentlich zu machen.
Ich erhalte die folgenden Fehler
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near ','.
bin ich mit dem entsprechenden Prozedurparameter des OPENROWSET Befehl in die richtigen Art und Weise verwenden?
warum Sie OUTPUT-Parameter nicht verwenden Sie stattdessen? – sepupic