Instrucción SQL Server RaisError

Instrucción SQL Server RaisError
La instrucción RaisError en SQL Server le permite generar y mostrar mensajes de error definidos por el usuario.

Usando la instrucción RaisError, puede crear mensajes de error personalizado y mostrarlos en sus aplicaciones. Los mensajes de error generados por la instrucción RaisError utilizarán el mismo formato que los mensajes generados por el sistema.

También puede definir varios parámetros, como la gravedad y el estado de los mensajes.

La sintaxis de la declaración RaisError es la que se muestra a continuación:

RaisError (Message_id | Message_Content | @Local_Variable
Severidad, estado
Con opción
);

Desglosemos la sintaxis de la declaración RaisError:

  1. Message_id: el mensaje_id se refiere a un usuario de definición de usuario_id que el procedimiento SP_ADDMessage utiliza para almacenar el mensaje en el SYS.Vista de catálogo de mensajes. Este valor debe estar por encima de 50,000.
  2. Message_content: este es el contenido real del mensaje de error. El mensaje puede contener hasta 2,047 caracteres. Si el mensaje de error excede este valor, SQL Server solo mostrará 2,044 caracteres y luego agregará las elipsis para mostrar el truncamiento de mensajes. El formato del mensaje es similar al de la función printf en la programación C.
  3. @local_variable: cualquier variable de cualquier tipo de carácter que contenga una cadena formateada en un estilo idéntico como el mensaje_content.
  4. Gravedad: define el nivel de gravedad del mensaje mostrado por la declaración RaisError. Este es un valor entero que oscila entre 0 y 25, cada valor que indica un alto nivel de gravedad. Tenga en cuenta que cualquier valor de gravedad entre 20 y 25 se trata como fatal. Si se recibe un error fatal, SQL Server termina la conexión del cliente y registra el mensaje de error. Para especificar un nivel de gravedad de más de 18, debe tener permisos de rastreo alter y ser miembro del rol de Sysadmin.
  5. Estado: este es un valor entero que varía entre 0 y 255. Los estados pueden ayudar a identificar la sección específica que aumenta los errores.
  6. Con la opción: este parámetro se usa para modificar cómo funciona la instrucción RaisError. Las opciones aceptadas incluyen:
    1. Con registro: muestra el mensaje al usuario y registre el error en los registros de errores.
    2. Con SetError: establece automáticamente los valores de error ERROR_NUMBER y @@ de error a Message_ID, ignorando el nivel de error especificado.
    3. Con Nowait: muestra el mensaje de error al cliente al instante.

Pista: Si no se define ningún valor para el parámetro Message_ID, la instrucción RaisError devolverá un error con una ID de 50,000. Por lo tanto, asegúrese de que todos sus mensajes_ids estén por encima de este valor.

Pista: El nivel de gravedad definido por el procedimiento SP_ADDMessage se anula por el definido por la declaración RaisError.

Cree mensajes ad hoc con el procedimiento SP_ADDMessage

Para agregar manualmente un mensaje de error al SYS.Vista del catálogo de mensajes, use el procedimiento SP_ADDMessage como se muestra en el siguiente ejemplo:

Ejecutivo sp_addmessage
@msgnum = 50001,
@severity = 10,
@MSGText = '[Error] ... Este es un error de prueba Mess'Ge';

Para ver el mensaje en la vista del catálogo:

Seleccionar * de SYS.mensajes donde mensaje_id = 50001;

La consulta debe volver como se muestra:

Para ejecutar el mensaje, use la instrucción RaisError como se muestra:

Raiserror (50001,10,1);

La consulta debe regresar:

[Error] ... Este es un mensaje de error de prueba

Para eliminar un mensaje del sys.Vista del catálogo de mensajes, use el sp_dropmessage como se muestra:

Exec sp_dropmessage @msgnum = 50001;

Declaración RaisError en el bloque de try/catch

Podemos usar la instrucción RaisError para lanzar un error dentro de un bloque de try/captación, como se muestra en la siguiente consulta de ejemplo:

Empezar a intentar
RaisError ('Error en el bloque de try', 15, 1);
Fin de prueba
Comenzar a atrapar
Declarar @errormsg nvarchar (4000);
Declarar @severity int;
Declarar @e_state int;
SELECCIONAR
@errormsg = error_message (),
@severity = ERROR_SEVERITY (),
@e_state = error_state ();
RaisError (@errormsg, @severity, @e_state);
Captura final

Si ejecutamos la consulta, deberíamos ver el siguiente mensaje de error:

MSG 50000, Nivel 15, Estado 1, Línea 12
Error en el bloque de prueba

Conclusión

En este artículo, aprendió cómo usar la instrucción RaisError en SQL Server para generar mensajes de error personalizado. Esto incluye la creación de mensajes ad hoc con el procedimiento SP_ADDMessage y el uso de la instrucción RaisError en el bloque de try/captación. Esperamos que hayas encontrado este artículo útil. Consulte otros artículos de Sugerencia de Linux para obtener más consejos e información.