ERROR_LINE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Эта функция возвращает номер строки, в которой произошла ошибка, вызвавшая выполнение блока CATCH конструкции TRY…CATCH.
Соглашения о синтаксисе Transact-SQL
Синтаксис
ERROR_LINE ( )
Тип возвращаемых данных
int
Возвращаемое значение
При вызове в блоке CATCH функция ERROR_LINE
возвращает:
- номер строки, где произошла ошибка;
- номер строки в подпрограмме, если ошибка возникла в хранимой процедуре или триггере;
- значение NULL в случае вызова вне блока CATCH.
Замечания
Функцию ERROR_LINE
можно вызывать в любом месте области действия блока CATCH.
Функция ERROR_LINE
возвращает номер строки, в которой возникла ошибка. Это происходит вне зависимости от места вызова ERROR_LINE
в пределах блока CATCH от числа вызовов ERROR_LINE
. В этом отличие данной функции от таких функций, как @@ERROR. Функция @@ERROR возвращает номер ошибки в той инструкции, которая непосредственно следует за инструкцией, вызвавшей ошибку, или же в первой инструкции блока CATCH.
Во вложенных блоках CATCH функция ERROR_LINE
возвращает номер строки ошибки, связанной с тем блоком CATCH, в котором она была вызвана. Например, блок CATCH конструкции TRY…CATCH может содержать вложенную конструкцию TRY…CATCH. Внутри вложенного блока CATCH функция ERROR_LINE
возвращает номер строки ошибки, вызвавшей вложенный блок CATCH. Если функция ERROR_LINE
выполняется во внешнем блоке CATCH, она возвращает номер строки ошибки, вызвавшей этот блок CATCH.
Примеры
А. Использование функции ERROR_LINE в блоке CATCH
В приведенном ниже примере кода показана инструкция SELECT
, вызывающая ошибку деления на ноль. Функция ERROR_LINE
возвращает номер строки, где произошла ошибка.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
B. Использование функции ERROR_LINE в блоке CATCH с хранимой процедурой
В приведенном ниже примере показана хранимая процедура, которая создает ошибку деления на 0. Функция ERROR_LINE
возвращает номер строки, где произошла ошибка.
-- 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 в блоке CATCH с другими средствами обработки ошибок
В приведенном ниже примере кода показана инструкция SELECT
, вызывающая ошибку деления на ноль. Функция ERROR_LINE
возвращает номер строки, где произошла ошибка, и сведения, связанные с этой ошибкой.
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
См. также
ПОПЫТКА... CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)