Aracılığıyla paylaş


ERROR_LINE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bu fonksiyon, bir TRY'nin CATCH bloğuna neden olan hata satır sayısını döndürür... CATCH yapısını yürütmek için.

Transact-SQL söz dizimi kuralları

Sözdizimi

ERROR_LINE ( )

Dönüş Türü

int

Dönüş Değeri

CATCH bloğunda çağrıldığında, ERROR_LINE geri döner

  • hatanın meydana geldiği satır numarası
  • hata bir prosedür veya tetikleyici içinde gerçekleştiyse bir rutindeki satır numarası
  • NULL, eğer CATCH blokunun kapsamı dışında çağrılırsa.

Açıklamalar

Bir çağrı, ERROR_LINE CATCH blokunun kapsamında herhangi bir yerde gerçekleşebilir.

ERROR_LINE hatanın meydana geldiği satır numarasını döndürür. Bu, çağrının CATCH bloğunun kapsamındaki konumu ERROR_LINE ve ne kadar çağrı ERROR_LINEolursa olsun gerçekleşir. Bu, @@ERROR gibi fonksiyonlarla tezat oluşturur. @@ERROR, hata yapan ifadede veya CATCH bloğunun ilk ifadesinde hata numarası döndürür.

İç içe CATCH bloklarında, ERROR_LINE referans bulunduğu CATCH bloğunun kapsamına özgü hata satır numarasını döndürür. Örneğin, bir TRY'nin CATCH bloğu... CATCH yapısı iç içe bir TRY içerebilir... CATCH yapı. İç içe CATCH bloğunda, ERROR_LINE iç içe CATCH bloğunu çağıran hata için satır numarasını döndürür. Dış ERROR_LINE CATCH bloğunda çalıştırılırsa, o CATCH bloğunu çağıran hata için satır numarasını döndürür.

Örnekler

A. CATCH blokunda ERROR_LINE kullanmak

Bu kod örneği, sıfıra böl hatası üreten bir SELECT ifadeyi gösterir. ERROR_LINE hatanın meydana geldiği satır numarasını döndürür.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_LINE() AS ErrorLine;  
END CATCH;  
GO  

B. Bir CATCH bloğunda ERROR_LINE kullanılarak saklanan bir prosedür

Bu örnek, sıfıra böl hatası üreten bir kayıtlı prosedürü gösterir. ERROR_LINE hatanın meydana geldiği satır numarası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_LINE() AS ErrorLine;  
END CATCH;  
GO  

C. ERROR_LINE'yi CATCH blokunda diğer hata işleme araçlarıyla kullanmak

Bu kod örneği, sıfıra böl hatası üreten bir SELECT ifadeyi gösterir. ERROR_LINE hatanın meydana geldiği satır numarasını ve hata ile ilgili bilgileri döndürür.

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  

Ayrıca Bkz.

DENEYIN... CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
HATA_DURUMU (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)