BeginTrans用于開(kāi)始一個(gè)事物;RollbackTrans用于回滾事務(wù);CommitTrans用于提交所有的事務(wù)處理結(jié)果,即確認(rèn)事務(wù)的處理
創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、武勝網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為武勝等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
BeginTrans和CommitTrans 用于標(biāo)記事務(wù)的開(kāi)始和結(jié)束,在這兩個(gè)之間的語(yǔ)句,就是作為事務(wù)處理的語(yǔ)句
以oracle自帶的scott為例:
1、select
t1.ename,t2.ename
as
mgrname,d.dname
from
scott.emp
t1,scott.emp
t2,scott.dept
d
where
t1.mgr=t2.empno
and
t2.deptno=d.deptno
2、select
d.*
from
scott.dept
d,(select
rownum
n,
tt.*
from
(select
count(*)
c,deptno
from
scott.emp
group
by
deptno
order
by
c
desc)
tt)t
where
t.n=1
and
t.deptno=d.deptno
3、select
*
from(select
t.*,dense_rank()over
(partition
by
deptno
order
by
sal)
r
from
scott.emp
t
where
deptno=30)
where
r=3
4、select
*
from(select
t.*,rank()over
(partition
by
n
order
by
sal)
r
from
(select
''
as
n,tt.*
from
scott.emp
tt)
t)
where
r
between
5
and
10
OracleTransaction 類包含多個(gè)屬性,其中的兩個(gè)為 Connection(指定與事務(wù)關(guān)聯(lián)的數(shù)據(jù)庫(kù)連接)和 IsolationLevel(指定事務(wù)隔離級(jí)別);本文稍后將向您介紹更多有關(guān)事務(wù)隔離級(jí)別的內(nèi)容。 OracleTransaction 類包含許多操控事務(wù)的方法。您可以使用 Commit() 方法永久提交 SQL 語(yǔ)句,并可以使用 Rollback() 撤銷這些語(yǔ)句。您還可以使用 Save() 在事務(wù)中設(shè)置一個(gè)保存點(diǎn)。 我現(xiàn)在將帶著您逐步完成兩個(gè)示例程序 ― 一個(gè)用 C# 編寫(xiě) (TransExample1.cs),另一個(gè)用 VB.NET 編寫(xiě) (TransExample1.vb)。這些程序演示了如何執(zhí)行一個(gè)包含了兩條 INSERT 語(yǔ)句的事務(wù)。第一條 INSERT 語(yǔ)句將在表 product_types 中添加一行,第二條將在表 products 中添加一行。 導(dǎo)入命名空間以下C# 程序語(yǔ)句指定在程序中使用 System 和 Oracle.DataAcess.Client 命名空間: using System; using Oracle.DataAccess.Client;下面是等價(jià)的 VB.NET 語(yǔ)句: Imports System Imports Oracle.DataAccess.ClientOracle.DataAccess.Client 命名空間是 ODP.NET 的一部分,它包含許多類,其中有OracleConnection、OracleCommand 和 OracleTransaction。示例程序用到了這些類。
oracle的事務(wù)是以session開(kāi)始登錄后的第一條DML語(yǔ)句開(kāi)始的,然后以DDL(drop,create,alter,rename等),TCL的rollback,commit,DCL(grant,revoke)結(jié)束。
當(dāng)然你也可以手動(dòng)設(shè)置事務(wù)屬性,如只讀事務(wù)或者順序事務(wù):
set transaction read only
set transaction isolation level SERIALIZABLE
登陸sqlplus,執(zhí)行如下操作:
set serverout on;
begin
insert into zyb values('zy2002001','112201001','y001',10000,'張三','05-01-2002','05-04-2002','05-25-2002','作業(yè)公司作業(yè)一隊(duì)','堵漏',7000,2500,1000,1400,11900,'李四','05-26-2002',11900,'王五','05-28-2002');
insert into clfb values('zy2002001','wm001',200,10);
insert into clfb values('zy2002001','wm002',200,10);
insert into clfb values('zy2002001','wm003',200,10);
insert into clfb values('zy2002001','wm004',100,10);
commit;
dbms_output.PUT_LINE('語(yǔ)句執(zhí)行成功');
exception
when others then
rollback;
dbms_output.PUT_LINE('語(yǔ)句執(zhí)行失敗');
end;
/