Resumen: En este tutorial, aprenderá a usar la instrucción SQL Server RAISERROR
para generar mensajes de error definidos por el usuario.
si desarrolla una nueva aplicación, debe usar la instrucción THROW
en su lugar.,
descripción general de la instrucción RAISEERROR de SQL Server
la instrucción RAISERROR
le permite generar sus propios mensajes de error y devolver estos mensajes a la aplicación utilizando el mismo formato que un mensaje de error o advertencia del sistema generado por el motor de base de datos de SQL Server. Además, la instrucción RAISERROR
le permite establecer un id de mensaje específico, un nivel de gravedad y un estado para los mensajes de error.,
lo siguiente ilustra la sintaxis de la instrucción RAISERROR
:
examinemos la sintaxis de la instrucción RAISERROR
para una mejor comprensión.
message_id
el message_id
es un número de mensaje de error definido por el usuario almacenado en la vista de catálogo sys.messages
.
para agregar un nuevo número de mensaje de error definido por el usuario, utilice el procedimiento almacenado sp_addmessage
. Un número de mensaje de error definido por el Usuario debe ser mayor que 50.000., De forma predeterminada, la instrucción RAISERROR
utiliza la instrucción message_id
50.000 para generar un error.,
La siguiente sentencia añade un mensaje de error personalizado para el sys.messages
vista:
Para verificar la inserción, utilice la siguiente consulta:
Code language: SQL (Structured Query Language) (sql)
Para usar este message_id, ejecutar el RAISEERROR
declaración de la siguiente manera:
Code language: SQL (Structured Query Language) (sql)
este es el resultado:
Code language: SQL (Structured Query Language) (sql)
Para eliminar un mensaje de la etiqueta sys.messages
, se utiliza el procedimiento almacenado sp_dropmessage
., Por ejemplo, la siguiente instrucción elimina el ID de mensaje 50005:
Code language: SQL (Structured Query Language) (sql)
message_text
el message_text
es un mensaje definido por el usuario con formato como la función printf
en la biblioteca estándar de C. El message_text
puede tener hasta 2.047 caracteres, 3 últimos caracteres están reservados para puntos suspensivos (…). Si message_text
contiene 2048 o más, se truncará y se rellenará con puntos suspensivos.,
cuando se especifica la instrucción message_text
, la instrucción RAISERROR
utiliza message_id 50000 para generar el mensaje de error.
el siguiente ejemplo utiliza la instrucción RAISERROR
para generar un error con un texto de mensaje:
Code language: SQL (Structured Query Language) (sql)
la salida se verá así:
Code language: SQL (Structured Query Language) (sql)
severity
el nivel de gravedad es un entero entre 0 y 25, con cada nivel representando la gravedad del error.
Code language: SQL (Structured Query Language) (sql)
state
el estado es un entero de 0 a 255., Si genera el mismo error definido por el usuario en varias ubicaciones, puede usar un número de estado único para cada ubicación para que sea más fácil encontrar qué sección del código está causando los errores. Para la mayoría de las implementaciones, puede usar 1.
CON la opción
La opción LOG
, NOWAIT
o SETERROR
:
-
WITH LOG
registra el error en el log de errores y registro de aplicación para la instancia de SQL Server Database Engine., -
WITH NOWAIT
envía el mensaje de error al cliente inmediatamente. -
WITH SETERROR
establece elERROR_NUMBER
y@@ERROR
valores a message_id o 50000, independientemente del nivel de gravedad.
ejemplos de RAISERROR de SQL Server
tomemos algunos ejemplos de uso de la instrucción RAISERROR
para obtener una mejor comprensión.,
A) usando SQL Server RAISERROR con Ejemplo de bloque try CATCH
en este ejemplo, usamos el bloque RAISERROR
dentro de un bloque TRY
para hacer que la ejecución salte al bloque asociado CATCH
. Dentro del bloque CATCH
, usamos el bloque RAISERROR
para devolver la información de error que invocó el bloque CATCH
.,
Aquí está la salida:
Code language: SQL (Structured Query Language) (sql)
B) usando la instrucción RAISERROR de SQL Server con un ejemplo de texto de mensaje dinámico
el siguiente ejemplo muestra cómo usar una variable local para proporcionar el texto del mensaje para una instrucción RAISERROR
:
la salida es la siguiente:
Code language: SQL (Structured Query Language) (sql)
cuándo usar la instrucción RAISERROR
se utiliza la instrucción RAISERROR
en los siguientes escenarios:
- solucionar problemas de código Transact-SQL.
- devuelve mensajes que contienen texto variable.
- Examine los valores de los datos.,
- Hacer que la ejecución salte de un bloque
TRY
al bloque asociadoCATCH
. - devuelve información de error del bloque
CATCH
a los llamantes, ya sea llamando a lote o aplicación.
en este tutorial, aprenderá a usar la instrucción SQL Server RAISERROR
para generar mensajes de error definidos por el usuario.