Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Эта функция возвращает номер строки, в которой произошла ошибка, вызвавшая выполнение блока 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
В. Использование функции 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)