学而实习之 不亦乐乎

SQL Server 流程控制语句(八):Try ... catch 语句

2022-08-05 08:19:24

当执行 try 的语法块中的代码出现错误时,系统会把控制传递给 catch 语法块去处理。

一、语法

BEGIN TRY 
    {sql_statement|statement_block}
END TRY
BEGIN CATCH
    {sql_statement|statement_block}
END CATCH
[;]
  • sql_statement:任何 T-SQL 语句。
  • statement_block:批处理或包含于 BEGIN ... END 块中的任何 T-SQL 语句组。

二、实例

use db_student
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_LINE() AS ErrorLine,     --返回导致错误的例程中的行号
        ERROR_MESSAGE() AS ErrorMessage;    --返回错误消息的完整文本
END CATCH;
GO