Maison >base de données >tutoriel mysql >Comment transmettre le résultat d'une expression en tant que paramètre dans une procédure stockée SQL Server ?

Comment transmettre le résultat d'une expression en tant que paramètre dans une procédure stockée SQL Server ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-11 17:01:42591parcourir

How to Pass the Result of an Expression as a Parameter in a SQL Server Stored Procedure?

Passer le résultat de l'expression en tant que paramètre dans la procédure stockée SQL Server

Un développeur a rencontré une erreur en essayant d'exécuter une procédure stockée, visant à améliorer le développement de la base de données. L'erreur se produit lorsque vous essayez de transmettre le résultat d'une expression (en particulier la concaténation de la chaîne « Impossible de trouver l'identifiant donné : » avec la valeur de la variable entière @pID) directement dans la liste d'arguments.

Cependant, SQL Server ne prend pas en charge de telles opérations dans la liste de paramètres elle-même. Au lieu de cela, une variable intermédiaire doit être utilisée pour contenir le résultat de l'expression avant de le transmettre à l'argument.

La syntaxe d'EXEC ne précise pas explicitement le format de la "valeur" dans la partie paramètre, indiquant que seules les expressions simples sont acceptées. Ces expressions sont limitées aux valeurs littérales et à certaines fonctions système préfixées par @@. Les autres fonctions système, même celles qui ne nécessitent pas de parenthèses, ne sont pas autorisées.

Ainsi, afin de résoudre cette erreur, les développeurs doivent utiliser la syntaxe suivante :

<code class="language-sql">DECLARE @pID INT;

SET @pID = 1;

/*如果使用2008及以上版本,之前的版本需要分成两个单独的语句*/
DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11));

EXEC WriteLog
  'Component',
  'Source',
  @string;</code>

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