Maison > base de données > tutoriel mysql > Comment puis-je utiliser les paramètres avec OPENQUERY dans SQL Server ?

Comment puis-je utiliser les paramètres avec OPENQUERY dans SQL Server ?

Susan Sarandon
Libérer: 2025-01-14 12:41:44
original
956 Les gens l'ont consulté

How Can I Use Parameters with OPENQUERY in SQL Server?

Utilisation des paramètres dans OPENQUERY

OPENQUERY est un outil puissant pour accéder aux données du serveur lié, mais l'intégration de paramètres dans les requêtes peut s'avérer difficile. La documentation indique clairement qu'OPENQUERY n'accepte pas de variables pour ses paramètres.

Solution :

Pour pallier cette limitation, plusieurs solutions de contournement sont disponibles :

  • Transmettre une valeur de base : Pour les cas simples où vous devez transmettre une valeur spécifique, utilisez un code comme celui-ci :
<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
  • Transmettez la requête entière : Lorsque vous devez transmettre la requête complète ou le nom du serveur lié, utilisez un code similaire au suivant :
<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
  • Utilisez la procédure stockée Sp_executesql : Pour simplifier le code et éviter plusieurs couches de guillemets, utilisez la méthode suivante :
<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

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