Maison > base de données > tutoriel mysql > Comment transmettre correctement les résultats d'expression en tant que paramètres de procédure stockée ?

Comment transmettre correctement les résultats d'expression en tant que paramètres de procédure stockée ?

Patricia Arquette
Libérer: 2025-01-11 17:12:43
original
514 Les gens l'ont consulté

How to Correctly Pass Expression Results as Stored Procedure Parameters?

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>
Copier après la connexion

Cela entraîne l'erreur :

<code>Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '+'.</code>
Copier après la connexion

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>
Copier après la connexion

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!

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