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);
é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;
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!