zoukankan      html  css  js  c++  java
  • SQL Server @@ERROR 用法

    @@error是系统函数,当没有发生错误时返回0,如果发生错误时@@error<>0,并返回错误号,每个SQL语句执行完,@@error值都会变。

    @@error只记录当前错误,如果存储过程执行多个操作,就要每次都判读@@error是否出现错误,比较麻烦。
    今天就遇到这个问题了,下面是一个简单的例子,就可以解决这个问题。


    create  proc proc_Test
    --根据ID修改表
    @id int ,          --id
    @name varchar(20)   --名字
    as
    begin transaction
    declare @errors int        --错误数

    --根据id修改
     update table1  set name=@name where id=@id
    --设置接受错误数
    set @errors=@errors+@@error

    r

    --查询销售id
    select  @xsbfid =id from receipt2 where sn=@sn
    set @errors=@errors+@@error

    --插入样机表
    insert into table2
    (name )values(@name)
    set @errors=@errors+@@error

    if (@errors<>0)
    begin
        rollback  transaction 
    end
    else
    begin
        commit transaction 
    end

    只是声明了一个变量,每次用它来累积错误值。嘻嘻,问题就解决了。

    http://blog.163.com/happy_2010_zyj/blog/static/151148756201041044646221/

    @@ERROR:当前一个语句遇到错误,则返回错误号,否则返回0。需要注意的是@ERROR在每一条语句执行后会被立刻重置,因此应该在要验证的语句执行后检查数值或者是将它保存到局部变量中以备将来使用。

    复制代码
    DECLARE @num INT,@temp INT
    DECLARE @err INT
    
    SELECT @temp=0;
    SET @err=0 
    SET @num =2/@temp; 
     --执行后@@ERROR为8134
    
    PRINT @@ERROR
     --执行后@@ERROR为0 
    IF @@ERROR = 0 
    BEGIN 
        PRINT @@ERROR 
    END
    复制代码

    分析:上面的SQL语句出现除0的错误,抛出错误信息,所以在执行除0语句后的@@Error数值是8134,但是在执行第一个Print @Error语句输出错误信息之后,注意,此时@@Error的数据立即变成了0!,这一点非常重要,因为@@Error在每一条语句执行后立刻被重置!同样的道理,执行IF @@ERROR = 0语句后@@ERROR的数值仍然是0,因为这句话也没有发生错误!

      

  • 相关阅读:
    arm架构与体系结构
    C语言双链表遍历,插入,删除
    C语言实现单链表的遍历,逆序,插入,删除
    C语言函数的变参实用与分析
    DEBUG宏
    运算中的临时匿名变量
    main函数的传参与返回
    存储类、作用域、生命周期、链接属性
    制作动态链接库并使用
    内存管理——进程创建,执行,缺页,终止
  • 原文地址:https://www.cnblogs.com/Alex80/p/10215957.html
Copyright © 2011-2022 走看看