在oracle存儲過程中,事務(wù)用于確保數(shù)據(jù)的一致性,由一組相關(guān)的DML語句組成,該組DML語句所執(zhí)行的操作要么全部確認,要么全部取消。當執(zhí)行事務(wù)操作時,會在被作用的表和行上加鎖,以防止其他用戶改變表結(jié)構(gòu),或其他事務(wù)在相應(yīng)行上執(zhí)行DML操作。
本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。
oracle存儲過程的事務(wù)處理
1、事務(wù)用于確保數(shù)據(jù)的一致性,由一組相關(guān)的DML語句組成,該組DML語句所執(zhí)行的操作要么全部確認,要么全部取消。
2、當執(zhí)行事務(wù)操作(DML)時,Oracle會在被作用的表上加鎖,以防止其他用戶改變表結(jié)構(gòu),同時也會在被作用的行上加行鎖,以防止其他事務(wù)在相應(yīng)行上執(zhí)行DML操作。
3、當執(zhí)行事務(wù)提交或事務(wù)回滾時,Oracle會確認事務(wù)變化或回滾事務(wù)、結(jié)束事務(wù)、刪除保存點、釋放鎖。
4、提交事務(wù)(COMMIT)確認事務(wù)變化,結(jié)束當前事務(wù)、刪除保存點,釋放鎖,使得當前事務(wù)中所有未決的數(shù)據(jù)永久改變。
5、保存點(SAVEPOINT)在當前事務(wù)中,標記事務(wù)的保存點。
6、回滾事務(wù)(ROLLBACK)回滾整個事務(wù),刪除該事務(wù)所定義的所有保存點,釋放鎖,丟棄所有未決的數(shù)據(jù)改變。
7、回滾事務(wù)到指定的保存點(ROLLBACK TO SAVEPOINT)回滾當前事務(wù)到指定的保存點,丟棄該保存點創(chuàng)建后的任何改變,釋放鎖。
8、當執(zhí)行DDL、DCL語句,或退出SQL*PLUS時,會自動提交事務(wù);
9、事務(wù)期間應(yīng)避免與使用者互動;
10、查詢數(shù)據(jù)期間,盡量不要啟動事務(wù);
11、盡可能讓事務(wù)持續(xù)地越短越好;
12、在事務(wù)中盡可能存取最少的數(shù)據(jù)量
案例:
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:違反唯一索引約束!'); end;
推薦教程:《Oracle教程》