Raiseerror y Concat para el Mensaje
-
03-07-2019 - |
Pregunta
Me gustaría hacer algo como esto
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)
Pero simplemente no está funcionando. ¿Cómo logro esto? Estoy en SQL Server 2005.
Solución
El mensaje de error en RAISERROR tiene en realidad una sintaxis similar a la función printf en C, por lo que, asumiendo que sus argumentos son del tipo de entero que necesitaría usar:
raiserror(N'Error in case @isFishy = %d @isSmarmy = %d @isTasty = %d',10,1,@isFishy,@isSmarmy,@isTasty)
revise BOL para obtener detalles y otros opciones
Otros consejos
Uso raiserror mucho. Tenemos algunos procedimientos almacenados que se llaman desde una aplicación .Net cada noche para el procesamiento por lotes, y la aplicación .Net desea registrar el resultado del procedimiento de esta manera. No sé por qué, pero generalmente tengo que construir la cadena antes de llamar a raiserror.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow