Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
Esta función devuelve el número del error que ha provocado la ejecución del bloque CATCH de una construcción TRY…CATCH.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ERROR_NUMBER ( )
Tipos de valor devuelto
int
Valor devuelto
Si se llama en un bloque CATCH, ERROR_NUMBER devuelve el número del error que ha provocado la ejecución del bloque CATCH.
ERROR_NUMBER devuelve NULL si se llama desde fuera del ámbito de un bloque CATCH.
Observaciones
ERROR_NUMBER admite llamadas en cualquier lugar del ámbito de un bloque CATCH.
ERROR_NUMBER devuelve un número de error relevante, con independencia de cuántas veces se ejecute o de dónde se ejecute dentro del ámbito del bloque CATCH. Esto contrasta con funciones como @@ERROR, que solo devuelve un número de error en la instrucción inmediatamente posterior a la que produjo el error.
En un bloque CATCH anidado, ERROR_NUMBER devuelve el número de error específico del ámbito del bloque CATCH al que hace referencia ese bloque CATCH. Por ejemplo, el bloque CATCH de una construcción TRY...CATCH externa podría tener una construcción TRY...CATCH interna. Dentro de ese bloque interno CATCH, ERROR_NUMBER devuelve el número del error que invocó el bloque CATCH interno. Si ERROR_NUMBER se ejecuta en el bloque CATCH externo, devuelve el número del error que invocó ese bloque CATCH externo.
Ejemplos
A. Usar ERROR_NUMBER en un bloque CATCH
En este ejemplo se muestra una instrucción SELECT que genera un error de división por cero. El bloque CATCH devuelve el número de error.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
Este es el conjunto de resultados.
-----------
(0 row(s) affected)
ErrorNumber
-----------
8134
(1 row(s) affected)
B. Usar ERROR_NUMBER en un bloque CATCH con otras herramientas de control de errores
En este ejemplo se muestra una instrucción SELECT que genera un error de división por cero. Junto con el número de error, el bloque CATCH devuelve información sobre ese error.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Este es el conjunto de resultados.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
Consulte también
sys.messages (Transact-SQL)
PROBAR... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Referencia de errores y eventos del motor de base de datos