Maison > base de données > tutoriel mysql > Comment puis-je transmettre les résultats d'expression en tant que paramètres aux procédures stockées SQL Server ?

Comment puis-je transmettre les résultats d'expression en tant que paramètres aux procédures stockées SQL Server ?

Linda Hamilton
Libérer: 2025-01-11 17:22:45
original
844 Les gens l'ont consulté

How Can I Pass Expression Results as Parameters to SQL Server Stored Procedures?

Utiliser la saisie d'expression comme paramètre de procédure stockée

Lors de la création d'une procédure stockée, vous pouvez rencontrer des difficultés à utiliser le résultat d'une expression comme paramètre. Voici un exemple :

<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

Cependant, ce code génère une erreur (SQL Server 2005) :

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

Explication de l'erreur de grammaire

SQL Server n'autorise pas de telles opérations dans les listes de paramètres. Il s'attend à ce que les arguments soient des valeurs littérales, des variables déclarées ou des expressions sans opérateurs.

Solution : Utiliser des variables intermédiaires

Pour résoudre ce problème, vous devez utiliser une variable intermédiaire. Le code corrigé ci-dessous illustre cette approche :

<code class="language-sql">DECLARE @pID INT;
SET @pID = 1;
DECLARE @logMessage VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11));
EXEC WriteLog 'Component', 'Source', @logMessage;</code>
Copier après la connexion

Syntaxe de l'instruction Exec

Pour référence, la syntaxe de l'instruction EXEC est la suivante :

<code class="language-sql">[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH <execute_option> [ ,...n ] ]
    }
[;]</execute_option></code>
Copier après la connexion

Limites actuelles

Dans SQL Server, les valeurs acceptables pour les paramètres dans les listes de paramètres sont limitées aux valeurs littérales et aux fonctions système préfixées par @@. Les fonctions telles que SCOPE_IDENTITY() ne sont pas prises en charge.

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