Maison > base de données > tutoriel mysql > Comment puis-je transmettre des paramètres à OPENQUERY dans SQL Server ?

Comment puis-je transmettre des paramètres à OPENQUERY dans SQL Server ?

Linda Hamilton
Libérer: 2025-01-14 12:48:44
original
1006 Les gens l'ont consulté

How Can I Pass Parameters to OPENQUERY in SQL Server?

Transmission de paramètres dans OPENQUERY : une solution de contournement

La commande

SQL Server OPENQUERY facilite l'interrogation des serveurs liés. Cependant, le passage direct de variables en tant que paramètres n'est pas pris en charge. Cet article présente des solutions de contournement efficaces.

Méthodes pour les requêtes paramétrées

Plusieurs stratégies peuvent être utilisées pour transmettre efficacement les paramètres, malgré les limitations de OPENQUERY :

1. Valeurs de base du codage en dur :

Pour les requêtes aux structures connues mais nécessitant des valeurs spécifiques, le SQL dynamique propose une solution :

<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>
Copier après la connexion

2. Passer la requête entière :

Cette approche est idéale pour les scénarios dans lesquels l'intégralité de la requête T-SQL ou le nom du serveur lié (ou les deux) doit être déterminé dynamiquement :

<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>
Copier après la connexion

3. Tirer parti de sp_executesql :

Pour simplifier les cotations complexes, la procédure stockée sp_executesql offre une alternative plus propre :

<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>
Copier après la connexion

En employant ces techniques, les développeurs peuvent intégrer avec succès des requêtes paramétrées avec OPENQUERY, surmontant ainsi ses limites inhérentes. Choisissez la méthode la mieux adaptée à vos besoins spécifiques et à la complexité de vos requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal