Pièges des paramètres de procédure stockée SQL Server : gestion des résultats d'expression
Transmettre la sortie d'expressions ou d'appels de fonction directement en tant que paramètres dans les procédures stockées SQL Server entraîne souvent des erreurs. Illustrons cela avec un problème courant rencontré dans SQL Server 2005 :
L'extrait de code suivant génère une erreur de syntaxe :
<code class="language-sql">DECLARE @pID int; SET @pID = 1; EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);</code>
Cela entraîne l'erreur :
<code>Msg 102, Level 15, State 1, Line 4 Incorrect syntax near '+'.</code>
La cause profonde ? SQL Server n'autorise pas l'utilisation directe d'expressions ou de résultats de fonction dans la liste de paramètres de la procédure stockée. La solution implique une variable intermédiaire.
Voici l'approche corrigée :
<code class="language-sql">DECLARE @pID INT; DECLARE @logMessage VARCHAR(50); SET @pID = 1; SET @logMessage = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11)); EXEC WriteLog 'Component', 'Source', @logMessage;</code>
Ce code révisé attribue le résultat de l'expression à @logMessage
, qui est alors correctement reconnu comme troisième paramètre. La procédure stockée s'exécute sans erreur.
Il est crucial de noter : cette restriction s'applique uniquement aux valeurs des paramètres ; les expressions dans le corps de la procédure stockée ne sont pas affectées.
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!