zoukankan      html  css  js  c++  java
  • 一个容易忽视的存储过程问题

    在MS SQL SEVER的存储过程中,最好加上事务哦,一般的书上都没提到这点,以后要注意下:

    set xact_abort on
    begin transcation
    /**中间执行的SQL代码*/
    commit transcation
     if @@error>0
           rollback

    SET XACT_ABORT
    指定当 Transact-SQL 语句产生运行时错误时,Microsoft? SQL Server? 是否自动回滚当前事务
    ,当设置为ON时,如果产生错误,则回滚整个事务,为OFF时,只回滚产生错误的SQL语句,而事务继续进行处理。 
      如果 Transact-SQL 语句执行成功,则 @@ERROR 系统函数返回 0;如果此语句产生错误,则 @@ERROR 返回错误号。每一个 Transact-SQL 语句完成时,@@ERROR 的值都会改变。

    因为每个 Transact-SQL 语句执行完毕时,@@ERROR 都会得到一个新的值,@@ERROR 可用以下两种方法处理:

    1.在 Transact-SQL 语句后,马上检测或使用 @@ERROR。


    2.在 Transact-SQL 语句完成后,马上把 @@ERROR 存储到一个整型变量中。此变量的值可供以后使用。

    @@ERROR 通常用于表示存储过程的成功或失败。整型变量初始化为 0。完成每个 Transact-SQL 语句后,都要测试 @@ERROR 是否为 0。如果 @@ERROR 不是 0,将被存储在变量中。存储过程然后在 RETURN 语句中返回变量。如果过程中的 Transact-SQL 语句都没有错误,变量保持为 0。如果一个或多个语句生成错误,则变量包含最后的错误号。
  • 相关阅读:
    STM32F107的DAC配置
    步进电机工作原理
    winform笔记本蓝牙与外部蓝牙设备通信
    C#里三种强制类型转换
    IE6/7BUG之OL有序列表没顺序
    IE6/7BUG之列表UL楼梯
    IE6/7BUG之A超链接无效
    IE6/7BUG之overflow:hidden无效
    linux shell 管道命令(pipe)使用及与shell重定向区别
    UGUI研究院之全面理解图集与使用
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/1257785.html
Copyright © 2011-2022 走看看