¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
ERROR_PROCEDURE (Transact-SQL)
Collapse the table of content
Expand the table of content

ERROR_PROCEDURE (Transact-SQL)

Devuelve el nombre del procedimiento almacenado o del desencadenador en el que se ha producido un error que ha causado la ejecución de un bloque CATCH de una construcción TRY…CATCH.


ERROR_PROCEDURE()

Cuando se llama en un bloque CATCH, devuelve el nombre del procedimiento almacenado en el que se ha producido el error.

Devuelve NULL si el error no se ha producido en un procedimiento almacenado o un desencadenador.

Devuelve NULL si se llama fuera del ámbito de un bloque CATCH.

ERROR_PROCEDURE se puede llamar en cualquier lugar dentro del ámbito de un bloque CATCH.

ERROR_PROCEDURE devuelve el nombre del procedimiento almacenado o desencadenador en el que se ha producido el error, independientemente del número de veces que se llame o del lugar desde el que se haga dentro del ámbito del bloque CATCH. Esto contrasta con las funciones, como @@ERROR, que devuelven el número de error en la instrucción inmediatamente posterior a la que ha causado el error o en la primera instrucción del bloque CATCH.

En los bloques CATCH anidados, ERROR_PROCEDURE devuelve el nombre del procedimiento almacenado o el desencadenador específico del ámbito del bloque CATCH en el que se hace referencia a él. Por ejemplo, el bloque CATCH de una construcción TRY…CATCH podría tener una TRY…CATCH anidada. En el bloque CATCH anidado, ERROR_PROCEDURE devuelve el nombre del procedimiento almacenado o el desencadenador en el que se ha producido el error y que ha llamado al bloque CATCH anidado. Si ERROR_PROCEDURE se ejecuta en el bloque CATCH externo, devuelve el nombre del procedimiento almacenado o el desencadenador en el que se ha producido el error y que ha llamado al bloque CATCH.

A. Utilizar ERROR_PROCEDURE en un bloque CATCH

En el siguiente ejemplo de código se muestra un procedimiento almacenado que genera un error de división por cero. ERROR_PROCEDURE devuelve el nombre del procedimiento almacenado en el que se ha producido el error.

USE AdventureWorks;
GO

-- Verify that the stored procedure does not already exist.
IF OBJECT_ID ( 'usp_ExampleProc', 'P' ) IS NOT NULL 
    DROP PROCEDURE usp_ExampleProc;
GO

-- Create a stored procedure that 
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
    SELECT 1/0;
GO

BEGIN TRY
    -- Execute the stored procedure inside the TRY block.
    EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
    SELECT ERROR_PROCEDURE() AS ErrorProcedure;
END CATCH;
GO

B. Utilizar ERROR_PROCEDURE en un bloque CATCH con otras herramientas de control de errores

En el siguiente ejemplo de código se muestra un procedimiento almacenado que genera un error de división por cero. Junto al nombre del procedimiento almacenado en el que se ha producido el error, se devuelve información relacionada con dicho error.

USE AdventureWorks;
GO

-- Verify that the stored procedure does not already exist.
IF OBJECT_ID ( 'usp_ExampleProc', 'P' ) IS NOT NULL 
    DROP PROCEDURE usp_ExampleProc;
GO

-- Create a stored procedure that 
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
    SELECT 1/0;
GO

BEGIN TRY
    -- Execute the stored procedure inside the TRY block.
    EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
    SELECT 
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_MESSAGE() AS ErrorMessage,
        ERROR_LINE() AS ErrorLine;
        END CATCH;
GO

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft