Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Bu işlev, bir yapı bloğunun yürütülmesine neden olursa hatanın oluştuğu saklı yordamın veya tetikleyicinin CATCHTRY...CATCH adını döndürür.
- SQL Server 2017 (14.x) ve sonraki sürümleri döndür
schema_name.stored_procedure_name - SQL Server 2016 (13.x) ve Azure SQL Veritabanı dönüşü
stored_procedure_name
Transact-SQL söz dizimi kuralları
Sözdizimi
ERROR_PROCEDURE ( )
Dönüş türleri
nvarchar(128)
Dönüş değeri
Bir CATCH blokta çağrıldığında, ERROR_PROCEDURE hatanın kaynaklandığı saklı yordamın veya tetikleyicinin adını döndürür.
ERROR_PROCEDURE , hatanın saklı yordamda veya tetikleyicide oluşmadığını döndürür NULL .
ERROR_PROCEDUREbir NULL bloğun kapsamı dışında çağrıldığında döndürürCATCH.
Açıklamalar
ERROR_PROCEDURE blok kapsamındaki her yerde çağrıları CATCH destekler.
ERROR_PROCEDURE blok kapsamında kaç kez çalıştığından veya nerede çalıştığından bağımsız olarak bir hatanın oluştuğu saklı yordamın veya tetikleyicinin CATCH adını döndürür. Bu sonuç, yalnızca hataya neden olanın hemen ardından deyiminde hata numarası döndüren gibi @@ERRORbir işlevle karşıttır.
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
A. CATCH bloğunda ERROR_PROCEDURE kullanma
Bu örnekte, sıfıra bölme hatası oluşturan saklı bir yordam gösterilmektedir.
ERROR_PROCEDURE hatanın oluştuğu saklı yordamın adını döndürür.
-- 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
Sonuç kümesi aşağıdadır.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Catch bloğunda diğer hata işleme araçlarıyla ERROR_PROCEDURE kullanma
Bu örnekte, sıfıra bölme hatası oluşturan saklı bir yordam gösterilmektedir. Saklı yordam, hatanın oluştuğu saklı yordamın adıyla birlikte hata hakkındaki bilgileri döndürür.
-- 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
Sonuç kümesi aşağıdadır.
-----------
(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)