2008-10-22 7 views
3

Je voudrais faire quelque chose comme çaraiseError et Concat pour le Message

raiserror(concat('Error in case @isFishy =', @isFishy, ' @isSmarmy=', @isSmarmy, ' @isTasty = ', @isTasty), 10, 1) 
--or 
raiserror('Error in case @isFishy =' + @isFishy + ' @isSmarmy=' + @isSmarmy + ' @isTasty = ' + @isTasty, 10, 1) 

Mais juste ne fonctionne pas. Comment puis-je accomplir cela? Je suis dans SQL Server 2005.

Répondre

15

Le message d'erreur dans RAISERROR a fait une syntaxe similaire à la fonction printf en C, donc en supposant que vos arguments sont de type integer vous devez utiliser:

raiserror(N'Error in case @isFishy = %d @isSmarmy = %d @isTasty = %d',10,1,@isFishy,@isSmarmy,@isTasty) 

départ BOL pour plus de détails et d'autres options

+1

Je me rends compte que vos arguments ressemblent plus à un type de données BIT qu'à INT, mais il semble que BIT n'est pas supporté comme type valide pour construire la chaîne de message – kristof

0

J'utilise raiserror beaucoup. Nous avons des procédures stockées qui sont appelées à partir d'une application .Net chaque nuit pour le traitement par lots, et l'application .Net veut enregistrer la sortie de la procédure de cette façon. Je ne sais pas pourquoi, mais je dois généralement construire la chaîne avant d'appeler raiserror.

Questions connexes