zoukankan      html  css  js  c++  java
  • (转)Oracle存储过程中的事务

    本文转载自:http://www.cnblogs.com/linjiqin/archive/2011/04/18/2019990.html

    1、事务用于确保数据的一致性,由一组相关的DML语句组成,该组DML语句所执行的操作要么全部确认,要么全部取消。
    2、当执行事务操作(DML)时,Oracle会在被作用的表上加锁,以防止其他用户改变表结构,同时也会在被作用的行上加行锁,以防止其他事务在相应行上执行DML操作。
    3、当执行事务提交或事务回滚时,Oracle会确认事务变化或回滚事务、结束事务、删除保存点、释放锁。
    4、提交事务(COMMIT)确认事务变化,结束当前事务、删除保存点,释放锁,使得当前事务中所有未决的数据永久改变。
    5、保存点(SAVEPOINT)在当前事务中,标记事务的保存点。
    6、回滚事务(ROLLBACK)回滚整个事务,删除该事务所定义的所有保存点,释放锁,丢弃所有未决的数据改变。
    7、回滚事务到指定的保存点(ROLLBACK TO SAVEPOINT)回滚当前事务到指定的保存点,丢弃该保存点创建后的任何改变,释放锁。
    8、当执行DDL、DCL语句,或退出SQL*PLUS时,会自动提交事务;
    9、事务期间应避免与使用者互动;
    10、查询数据期间,尽量不要启动事务;
    11、尽可能让事务持续地越短越好;
    12、在事务中尽可能存取最少的数据量

    create or replace procedure stu_proc
    (
      v_id in number,
      v_name in varchar2,
      v_age in number,
      v_msg out varchar2
    ) as
    begin
      insert into student(id, sname, age) values (v_id, v_name, v_age);
      commit;
      v_msg:='添加成功';
    exception
      when others then
        rollback;
        v_msg:='失败成功';
        RAISE_APPLICATION_ERROR(-20010, 'ERROR:违反唯一索引约束!');
      --OU_MSG    := SQLERRM; 这个是获取到的异常
    end;
  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/4103720.html
Copyright © 2011-2022 走看看