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
Linda Hamiltonoriginal
2025-01-14 12:48:44968parcourir

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>

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>

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>

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!

Déclaration:
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