時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
以下的文章主要是介紹Oracle游標(biāo)的刪除與更新,我們都知道在PL/SQL中是可以使用UPDATE與DELETE語句來更新或者刪除相關(guān)的數(shù)據(jù)行。顯式Oracle游標(biāo)只有在需要獲得多行數(shù)據(jù)的情況下使用。
PL/SQL提供了僅僅使用Oracle游標(biāo)就可以執(zhí)行刪除或更新記錄的方法。
UPDATE或DELETE語句中的WHERE CURRENT OF子串專門處理要執(zhí)行UPDATE或DELETE操作的表中取出的最近的數(shù)據(jù)。
要使用這個方法,在聲明游標(biāo)時必須使用FOR UPDATE子串,當(dāng)對話使用FOR UPDATE子串打開一個Oracle游標(biāo)時,所有返回集中的數(shù)據(jù)行都將處于行級(ROW-LEVEL)獨占式鎖定,其他對象只能查詢這些數(shù)據(jù)行,不能進行UPDATE、DELETE或SELECT...FOR UPDATE操作。
語法:
1.FOR UPDATE [OF [schema.]table.column[,[schema.]table.column]..
2.[nowait]
在多表查詢中,使用OF子句來鎖定特定的表,如果忽略了OF子句,那么所有表中選擇的數(shù)據(jù)行都將被鎖定。如果這些數(shù)據(jù)行已經(jīng)被其他會話鎖定,那么正常情況下ORACLE將等待,直到數(shù)據(jù)行解鎖。
在UPDATE和DELETE中使用WHERE CURRENT OF子串的語法如下:
1.WHERE{CURRENT OF cursor_name|search_condition}
例:
1.DELCARE
2.CURSOR c1 IS SELECT empno,salary
3.FROM emp
4.WHERE comm IS NULL
5.FOR UPDATE OF comm;
6.v_comm NUMBER(10,2);
7.BEGIN
8.FOR r1 IN c1 LOOP
9.IF r1.salary<500 THEN
10.v_comm:=r1.salary*0.25;
11.ELSEIF r1.salary<1000 THEN
12.v_comm:=r1.salary*0.20;
13.ELSEIF r1.salary<3000 THEN
14.v_comm:=r1.salary*0.15;
15.ELSE
16.v_comm:=r1.salary*0.12;
17.END IF;
18.UPDATE emp;
19.SET comm=v_comm
20.WHERE CURRENT OF c1l;
21.END LOOP;
22.END
以上的相關(guān)內(nèi)容就是對Oracle游標(biāo)中的更新和刪除的介紹,望你能有所收獲。
關(guān)鍵詞標(biāo)簽:Oracle游標(biāo)
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法