Heim >Datenbank >MySQL-Tutorial >Wie kann ich Parameter an OPENQUERY in SQL Server übergeben?

Wie kann ich Parameter an OPENQUERY in SQL Server übergeben?

Linda Hamilton
Linda HamiltonOriginal
2025-01-14 12:48:441029Durchsuche

How Can I Pass Parameters to OPENQUERY in SQL Server?

Parameterübergabe in OPENQUERY: Eine Problemumgehung

Der OPENQUERY-Befehl von SQL Server erleichtert die Abfrage verknüpfter Server. Die direkte Übergabe von Variablen als Parameter wird jedoch nicht unterstützt. In diesem Artikel werden effektive Problemumgehungen beschrieben.

Methoden für parametrisierte Abfragen

Trotz der Einschränkungen von OPENQUERY:

können mehrere Strategien verwendet werden, um Parameter effektiv zu übergeben

1. Grundwerte fest kodieren:

Für Abfragen mit bekannten Strukturen, die jedoch bestimmte Werte erfordern, bietet dynamisches SQL eine Lösung:

<code class="language-sql">DECLARE @TSQL varchar(8000), @VAR char(2);
SELECT @VAR = 'CA';
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')';
EXEC (@TSQL);</code>

2. Übergeben der gesamten Abfrage:

Dieser Ansatz ist ideal für Szenarien, in denen die gesamte T-SQL-Abfrage oder der Name des Verbindungsservers (oder beides) dynamisch bestimmt werden muss:

<code class="language-sql">DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000);
SET @LinkedServer = 'MyLinkedServer';
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''';
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')';
EXEC (@OPENQUERY+@TSQL);</code>

3. Nutzung sp_executesql:

Um komplexe Zitate zu vereinfachen, bietet die sp_executesql gespeicherte Prozedur eine sauberere Alternative:

<code class="language-sql">DECLARE @VAR char(2);
SELECT @VAR = 'CA';
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR;</code>

Durch den Einsatz dieser Techniken können Entwickler parametrisierte Abfragen erfolgreich in OPENQUERY integrieren und so die inhärenten Einschränkungen überwinden. Wählen Sie die Methode, die Ihren spezifischen Anforderungen und der Komplexität Ihrer Abfrage am besten entspricht.

Das obige ist der detaillierte Inhalt vonWie kann ich Parameter an OPENQUERY in SQL Server übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn