Bagikan melalui


ERROR_PROCEDURE (T-SQL)

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Fungsi ini mengembalikan nama prosedur tersimpan atau pemicu di mana kesalahan terjadi, jika kesalahan tersebut menyebabkan blok CATCH dari TRY... KONSTRUKSI CATCH untuk dieksekusi.

  • SQL Server 2017 melalui versi saat ini mengembalikan schema_name.stored_procedure_name
  • Pengembalian SQL Server 2016 stored_procedure_name

Konvensi sintaks transact-SQL

Sintaks

ERROR_PROCEDURE ( )  

Jenis Kembalian

nvarchar(128)

Tampilkan Nilai

Ketika dipanggil dalam blok CATCH, ERROR_PROCEDURE mengembalikan nama prosedur tersimpan atau pemicu di mana kesalahan berasal.

ERROR_PROCEDURE mengembalikan NULL jika kesalahan tidak terjadi dalam prosedur atau pemicu tersimpan.

ERROR_PROCEDURE mengembalikan NULL saat dipanggil di luar cakupan blok CATCH.

Keterangan

ERROR_PROCEDURE mendukung panggilan di mana saja dalam cakupan blok CATCH.

ERROR_PROCEDURE mengembalikan nama prosedur tersimpan atau pemicu di mana kesalahan terjadi, terlepas dari berapa kali ia berjalan, atau di mana ia berjalan, dalam cakupan CATCH blok. Ini berbeda dengan fungsi seperti @@ERROR, yang hanya mengembalikan nomor kesalahan dalam pernyataan segera setelah yang menyebabkan kesalahan.

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

J. Menggunakan ERROR_PROCEDURE dalam blok CATCH

Contoh ini menunjukkan prosedur tersimpan yang menghasilkan kesalahan divide-by-zero. ERROR_PROCEDURE mengembalikan nama prosedur tersimpan tempat kesalahan terjadi.

-- 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  

Berikut set hasilnya.

-----------

(0 row(s) affected)

ErrorProcedure
--------------------
usp_ExampleProc

(1 row(s) affected)

B. Menggunakan ERROR_PROCEDURE dalam blok CATCH dengan alat penanganan kesalahan lainnya

Contoh ini menunjukkan prosedur tersimpan yang menghasilkan kesalahan divide-by-zero. Seiring dengan nama prosedur tersimpan tempat kesalahan terjadi, prosedur tersimpan mengembalikan informasi tentang kesalahan.

-- 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

Berikut set hasilnya.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure   ErrorMessage                       ErrorLine
----------- ------------- ----------- ---------------- ---------------------------------- -----------
8134        16            1           usp_ExampleProc  Divide by zero error encountered.  6

(1 row(s) affected)

Lihat Juga

sys.messages (Transact-SQL)
COBA... CATCH (Transact-SQL)
ERROR_LINE (T-SQL)
ERROR_MESSAGE (T-SQL)
ERROR_NUMBER (T-SQL)
ERROR_SEVERITY (T-SQL)
ERROR_STATE (T-SQL)
RAISERROR (Transact-SQL)
@@ERROR (T-SQL)