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
Linda Hamiltonoriginal
2025-01-11 17:22:45845parcourir

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>

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

<code>Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '+'.</code>

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>

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>

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!

Déclaration:
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