Heim > Datenbank > MySQL-Tutorial > Wie kann ich Parameter mit OPENQUERY von SQL Server verwenden?

Wie kann ich Parameter mit OPENQUERY von SQL Server verwenden?

Linda Hamilton
Freigeben: 2025-01-14 12:35:47
Original
115 Leute haben es durchsucht

How Can I Use Parameters with SQL Server's OPENQUERY?

SQL Server OPENQUERY mit Parametern: Problemumgehungen

SQL Server OPENQUERY führt Abfragen auf Verbindungsservern aus, die direkte Verwendung von Variablen in seinen Argumenten wird jedoch nicht unterstützt. Dies erfordert Workarounds für die Parameterübergabe.

Methode 1: Übergabe einfacher Werte per String-Verkettung

Für einfache Abfragen, die bestimmte Werte benötigen, ist dynamisches SQL mit String-Verkettung eine praktikable 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>
Nach dem Login kopieren

Methode 2: Übergeben der gesamten Abfrage als String

Dieser Ansatz ermöglicht die dynamische Übergabe der vollständigen Abfrage oder sogar des Verbindungsservernamens:

<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 für eine sauberere Parameterbehandlung

Um komplexe verschachtelte Anführungszeichen zu vermeiden, verwenden Sie sp_executesql:

<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;
```  This method offers improved readability and reduces the risk of SQL injection vulnerabilities compared to string concatenation.  Note that you're executing `sp_executesql` on the linked server itself.


Choose the method that best suits your query complexity and preference for code clarity.  Remember to prioritize security and avoid SQL injection vulnerabilities when using dynamic SQL.</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Parameter mit OPENQUERY von SQL Server verwenden?. 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