ERROR_PROCEDURE (SQL bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Fungsi ini mengembalikan nama prosedur tersimpan atau pemicu di mana kesalahan terjadi, jika kesalahan itu menyebabkan blok CATCH dari TRY... Konstruksi CATCH untuk dieksekusi.
- SQL Server 2017 hingga versi saat ini mengembalikan schema_name.stored_procedure_name
- SQL Server 2016 mengembalikan stored_procedure_name
Sintaks
ERROR_PROCEDURE ( )
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Jenis Pengembalian
nvarchar(128)
Tampilkan Nilai
Ketika dipanggil di blok CATCH, ERROR_PROCEDURE mengembalikan nama prosedur tersimpan atau pemicu asal kesalahan.
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 kontras 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 bagi-demi-nol. 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 adalah tataan hasil.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Menggunakan ERROR_PROCEDURE di blok CATCH dengan alat penanganan kesalahan lainnya
Contoh ini menunjukkan prosedur tersimpan yang menghasilkan kesalahan bagi-demi-nol. Bersama 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 adalah hasil yang ditetapkan.
-----------
(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)
MENCOBA... CATCH (SQL Bertransaksi)
ERROR_LINE (SQL Bertransaksi)
ERROR_MESSAGE (SQL bertransaksi)
ERROR_NUMBER (SQL bertransaksi)
ERROR_SEVERITY (SQL bertransaksi)
ERROR_STATE (SQL Bertransaksi)
RAISERROR (SQL bertransaksi)
@@ERROR (SQL Bertransaksi)
