@@ERROR使用方法

@@ERROR 返回最后执行的 Transact - SQL 语句的错误代码。 语法 @@ERROR 返回类型 integer 注释 当 Microsoft® SQL Server™ 完成 Transact - SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0 。若出现一个错误,则返回一条错误信息。 @@ERROR 返回此错误信息代码,直到另一条 Transact - SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。 由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。 示例 A.用 @@ERROR 检测一个特定错误 下面的示例用 @@ERROR 在一个 UPDATE 语句中检测限制检查冲突(错误 # 547 )。 USE pubs GO UPDATE authors SET au_id = ' 172 32 1176 ' WHERE au_id = " 172 - 32 - 1176 " IF @@ERROR = 547    print "A check constraint violation occurred" B.用 @@ERROR 有条件地退出一个过程 在此示例中, IF ... ELSE 语句在存储过程中的 INSERT 语句后检测 @@ERROR @@ERROR 变量的值将决定传给调用程序的返回值,以指示此过程的成功与失败。 USE pubs GO -- Create the procedure. CREATE PROCEDURE add_author @au_id varchar ( 11 ), @au_lname varchar ( 40 ), @au_fname varchar ( 20 ), @phone char ( 12 ), @address varchar ( 40 ) = NULL , @city varchar ( 20 ) = NULL , @state char ( 2 ) = NULL , @zip char ( 5 ) = NULL , @contract bit = NULL AS -- Execute the INSERT statement. INSERT INTO authors (au_id,  au_lname, au_fname, phone, address, city, state, zip, contract) values ( @au_id , @au_lname , @au_fname , @phone , @address , @city , @state , @zip , @contract ) -- Test the error value. IF @@ERROR <> 0 BEGIN    -- Return 99 to the calling program to indicate failure.    PRINT "An error occurred loading the new author information"    RETURN ( 99 ) END ELSE BEGIN    -- Return 0 to the calling program to indicate success.    PRINT "The new author information has been loaded"    RETURN ( 0 ) END GO C.用 @@ERROR 检测几条语句的成功 下面的示例取决于 INSERT DELETE 语句的成功操作。局部变量在两条语句后均被设置为 @@ERROR 的值,并且用于此操作的共享错误处理例程中。 USE pubs GO DECLARE @del_error int , @ins_error int -- Start a transaction. BEGIN TRAN -- Execute the DELETE statement. DELETE authors WHERE au_id = ' 409-56-7088 ' -- Set a variable to the error value for -- the DELETE statement. SELECT @del_error = @@ERROR -- Execute the INSERT statement. INSERT authors    VALUES ( ' 409-56-7008 ' , ' Bennet ' , ' Abraham ' , ' 415 658-9932 ' ,    ' 6223 Bateman St. ' , ' Berkeley ' , ' CA ' , ' 94705 ' , 1 ) -- Set a variable to the error value for -- the INSERT statement. SELECT @ins_error = @@ERROR -- Test the error values. IF @del_error = 0 AND @ins_error = 0 BEGIN    -- Success. Commit the transaction.    PRINT "The author information has been replaced"       COMMIT TRAN END ELSE BEGIN    -- An error occurred. Indicate which operation(s) failed    -- and roll back the transaction.    IF @del_error <> 0       PRINT "An error occurred during execution of the DELETE       statement."    IF @ins_error <> 0       PRINT "An error occurred during execution of the INSERT       statement."    ROLLBACK TRAN END GO D. 与 @@ROWCOUNT 一同使用 @@ERROR 下面的示例用 @@ERROR @@ROWCOUNT 验证一条 UPDATE 语句的操作。为任何可能出现的错误而检验 @@ERROR 的值,而用 @@ROWCOUNT 保证更新已成功应用于表中的某行。 USE pubs GO CREATE PROCEDURE change_publisher @title_id tid, @new_pub_id char ( 4 ) AS -- Declare variables used in error checking. DECLARE @error_var int , @rowcount_var int -- Execute the UPDATE statement. UPDATE titles SET pub_id = @new_pub_id WHERE title_id = @title_id -- Save the @@ERROR and @@ROWCOUNT values in local -- variables before they are cleared. SELECT @error_var = @@ERROR , @rowcount_var = @@ROWCOUNT -- Check for errors. If an invalid @new_pub_id was specified -- the UPDATE statement returns a foreign-key violation error #547. IF @error_var <> 0 BEGIN    IF @error_var = 547    BEGIN       PRINT "ERROR: Invalid ID specified for new publisher"       RETURN ( 1 )    END    ELSE    BEGIN       PRINT "ERROR: Unhandled error occurred"       RETURN ( 2 )    END END -- Check the rowcount. @rowcount_var is set to 0 -- if an invalid @title_id was specified. IF @rowcount_var = 0 BEGIN    PRINT "Warning: The title_id specified is not valid"    RETURN ( 1 ) END ELSE BEGIN    PRINT "The book has been updated with the new publisher"    RETURN ( 0 ) END GO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@ExceptionHandler是Spring框架中的一个注解,用于处理全局异常。当应用程序中发生异常时,@ExceptionHandler注解可以捕获并处理这些异常,以便提供自定义的错误处理逻辑。 使用@ExceptionHandler注解的步骤如下: 1. 在控制器类中定义一个带有@ExceptionHandler注解的方法,用于处理特定类型的异常。该方法可以有多个参数,其中第一个参数是异常类型,后面可以跟随其他参数,如HttpServletRequest或HttpServletResponse等。 2. 在@ExceptionHandler注解中指定要处理的异常类型。可以使用value属性指定单个异常类型,也可以使用多个value属性指定多个异常类型。 3. 在处理方法中编写自定义的错误处理逻辑。可以根据需要进行日志记录、返回自定义错误信息或执行其他操作。 以下是一个使用@ExceptionHandler注解的示例: ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = {Exception.class}) public ResponseEntity<String> handleException(Exception ex) { // 自定义错误处理逻辑 String errorMessage = "An error occurred: " + ex.getMessage(); return new ResponseEntity<>(errorMessage, HttpStatus.INTERNAL_SERVER_ERROR); } } ``` 在上面的示例中,`handleException`方法使用`@ExceptionHandler`注解来处理`Exception`类型的异常。当应用程序中发生`Exception`类型的异常时,该方法会被调用,并返回一个包含自定义错误信息的`ResponseEntity`对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值