游標修改和刪除操作
來源:懂視網
責編:小采
時間:2020-11-09 15:04:55
游標修改和刪除操作
游標修改和刪除操作:游標修改和刪除操作是指在游標定位下,修改或刪除表中指定的數據行。這時,要求游標查詢語句中必須使用FOR UPDATE選項,以便在打開游標時鎖定游標結果集合在表中對應數據行的所有列和部分列。 為了對正在處理(查詢)的行不被另外的用戶改動,ORACLE 提供
導讀游標修改和刪除操作:游標修改和刪除操作是指在游標定位下,修改或刪除表中指定的數據行。這時,要求游標查詢語句中必須使用FOR UPDATE選項,以便在打開游標時鎖定游標結果集合在表中對應數據行的所有列和部分列。 為了對正在處理(查詢)的行不被另外的用戶改動,ORACLE 提供

游標修改和刪除操作是指在游標定位下,修改或刪除表中指定的數據行。這時,要求游標查詢語句中必須使用FOR UPDATE選項,以便在打開游標時鎖定游標結果集合在表中對應數據行的所有列和部分列。 為了對正在處理(查詢)的行不被另外的用戶改動,ORACLE 提供一個 F
游標修改和刪除操作是指在游標定位下,修改或刪除表中指定的數據行。這時,要求游標查詢語句中必須使用FOR UPDATE選項,以便在打開游標時鎖定游標結果集合在表中對應數據行的所有列和部分列。
為了對正在處理(查詢)的行不被另外的用戶改動,ORACLE 提供一個 FOR UPDATE 子句來對所選擇的行進行鎖住。該需求迫使ORACLE鎖定游標結果集合的行,可以防止其他事務處理更新或刪除相同的行,直到您的事務處理提交或回退為止。
語法:
SELECT . . . FROM … FOR UPDATE [OF column[, column]…] [NOWAIT]
如果另一個會話已對活動集中的行加了鎖,那么SELECT FOR UPDATE操作一直等待到其它的會話釋放這些鎖后才繼續自己的操作,對于這種情況,當加上NOWAIT子句時,如果這些行真的被另一個會話鎖定,則OPEN立即返回并給出:
ORA-00 :resource busy and acquire with nowait specified.
如果使用 FOR UPDATE 聲明游標,則可在DELETE和UPDATE 語句中使用WHERE CURRENT OF cursor_name子句,修改或刪除游標結果集合當前行對應的數據庫表中的數據行。
如:從EMP表中查詢某部門的員工情況,將其工資最低定為 1500;
DECLARE
V_deptno emp.deptno%TYPE :=&p_deptno;
CURSOR emp_cursor IS SELECT empno, sal
FROM emp WHERE deptno=v_deptno FOR UPDATE OF sal NOWAIT;
FOR emp_record IN emp_cursor LOOP
IF emp_record.sal < 1500 THEN
UPDATE emp SET sal=1500 WHERE CURRENT OF emp_cursor;
END IF;
END LOOP;
-- COMMIT;
END;
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
游標修改和刪除操作
游標修改和刪除操作:游標修改和刪除操作是指在游標定位下,修改或刪除表中指定的數據行。這時,要求游標查詢語句中必須使用FOR UPDATE選項,以便在打開游標時鎖定游標結果集合在表中對應數據行的所有列和部分列。 為了對正在處理(查詢)的行不被另外的用戶改動,ORACLE 提供