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
Linda HamiltonOriginal
2025-01-14 12:35:47117Durchsuche

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>

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>

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>

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!

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