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

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

Linda Hamilton
Freigeben: 2025-01-14 12:27:42
Original
356 Leute haben es durchsucht

How Can I Pass Parameters to an OPENQUERY in SQL Server?

Übergabe von Parametern an OPENQUERY in SQL Server

Die OPENQUERY-Anweisung von SQL Server führt Abfragen auf Verbindungsservern aus. Das direkte Einbetten von Parametern in die OPENQUERY-Anweisung wird jedoch nicht unterstützt. In der Dokumentation von Microsoft heißt es eindeutig, dass OPENQUERY keine Variablen als Argumente akzeptiert. Lassen Sie uns effektive Problemumgehungen erkunden:

Methode 1: Werte fest codieren (für eine begrenzte Anzahl von Parametern)

Dieser Ansatz eignet sich, wenn Sie nur wenige spezifische Werte übergeben müssen. Zum Erstellen der Abfrage wird die Zeichenfolgenverkettung verwendet:

<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>
Nach dem Login kopieren

Methode 2: Dynamische Abfragekonstruktion (für komplexere Abfragen oder dynamische Verbindungsservernamen)

Für komplexere Abfragen oder Szenarien, in denen der Name des Verbindungsservers variabel ist, bietet dynamisches SQL eine Lösung:

<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>
Nach dem Login kopieren

Methode 3: Verwendung von sp_executesql (um Zitierprobleme zu minimieren)

Um komplexe Zeichenfolgenverkettungen und potenzielle Anführungszeichenprobleme zu vermeiden, bietet sp_executesql eine sauberere Lösung:

<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>
Nach dem Login kopieren

Diese Methoden bieten praktische Möglichkeiten, Parameter in Ihre OPENQUERY-Anweisungen zu integrieren und so eine effiziente Interaktion mit Verbindungsservern zu ermöglichen. Wählen Sie die Methode, die Ihren spezifischen Bedürfnissen und Ihrer Komplexität am besten entspricht.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage