Fehlerbehebung bei OPENROWSET-Abfragen mit Variablen
Beim Verwenden der OPENROWSET-Funktion für den Zugriff auf externe Daten können Fehler auftreten, wenn Sie Variablenausdrücke in die einschließen Abfragezeichenfolge. Ein solches Beispiel ist der Fehler „Falsche Syntax in der Nähe von „“. Dies tritt auf, wenn Sie versuchen, eine Variable mit der OPENROWSET-Anweisung zu verketten, wie in der folgenden Abfrage zu sehen ist:
SELECT * FROM OPENROWSET( 'SQLNCLI', 'DRIVER={SQL Server};', 'EXEC dbo.sProc1 @ID = ' + @id )
In dieser Abfrage wird die Variable @id mithilfe des Operators „“ an die EXEC-Anweisung angehängt . OPENROWSET unterstützt jedoch nicht die Verwendung von Ausdrücken in seiner Abfragezeichenfolge.
Lösung:
Um dieses Problem zu beheben, können Sie Variablen in der OPENROWSET-Abfrage nicht direkt verwenden. Stattdessen können Sie dynamisches SQL erstellen, um die Parameter zu übergeben. Hier ist ein Beispiel:
Declare @ID int Declare @sql nvarchar(max) Set @ID=1 Set @sql='SELECT * FROM OPENROWSET( ''SQLNCLI'', ''DRIVER={SQL Server};'', ''EXEC dbo.usp_SO @ID =' + convert(varchar(10),@ID) + ''')' -- Print @sql Exec(@sql)
In dieser Lösung definieren wir eine Variable @sql, um die dynamische SQL-Abfrage zu speichern und verketten die Variable @ID mithilfe der Funktion CONVERT(). Dadurch können wir die dynamische SQL-Anweisung mit dem gewünschten Parameter ausführen.
Das obige ist der detaillierte Inhalt vonWie behebe ich „Falsche Syntax in der Nähe von „''-Fehler in OPENROWSET-Abfragen mit Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!