Maison > base de données > tutoriel mysql > Comment gérer les résultats d'expression en tant que paramètres de procédure stockée dans SQL Server ?

Comment gérer les résultats d'expression en tant que paramètres de procédure stockée dans SQL Server ?

Susan Sarandon
Libérer: 2025-01-11 17:17:42
original
445 Les gens l'ont consulté

How to Handle Expression Results as Stored Procedure Parameters in SQL Server?

Défis des paramètres de procédure stockée SQL Server

L'utilisation de paramètres avec des procédures stockées rationalise le développement de bases de données. Cependant, l'intégration directe des résultats d'expression ou de fonction dans la liste de paramètres d'une procédure stockée peut entraîner des problèmes. Par exemple, le code suivant :

DECLARE @pID int;
SET @pID = 1;
EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);
Copier après la connexion

échoue dans SQL Server 2005 et versions antérieures, générant une erreur de syntaxe « Msg 102 ». Cette limitation provient de la façon dont SQL Server gère les paramètres.

La solution : les variables intermédiaires

La solution de contournement consiste à utiliser une variable intermédiaire. SQL Server n'autorise pas l'intégration directe des résultats d'expression en tant que paramètres ; cependant, une variable intermédiaire apporte une solution.

La syntaxe corrigée est :

DECLARE @pID INT;
SET @pID = 1;

/* For SQL Server 2008 and later;  For earlier versions, these must be separate statements */
DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11));

EXEC WriteLog
  'Component',
  'Source',
  @string;
Copier après la connexion

En attribuant la sortie de l'expression ("Impossible de trouver l'identifiant donné : ' CAST (@pID AS VARCHAR(11))) à la variable @string, nous pouvons ensuite passer @string en paramètre à WriteLog, intégrant efficacement le résultat de l’expression. Notez la distinction importante pour les versions antérieures à SQL Server 2008 nécessitant des instructions DECLARE et SET distinctes.

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 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