程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle游標的刪除與更新實際操作步驟

Oracle游標的刪除與更新實際操作步驟

編輯:Oracle數據庫基礎

以下的文章主要是介紹Oracle游標的刪除與更新,我們都知道在PL/SQL中是可以使用UPDATE與DELETE語句來更新或者刪除相關的數據行。顯式Oracle游標只有在需要獲得多行數據的情況下使用。

PL/SQL提供了僅僅使用Oracle游標就可以執行刪除或更新記錄的方法。

UPDATE或DELETE語句中的WHERE CURRENT OF子串專門處理要執行UPDATE或DELETE操作的表中取出的最近的數據。

要使用這個方法,在聲明游標時必須使用FOR UPDATE子串,當對話使用FOR UPDATE子串打開一個Oracle游標時,所有返回集中的數據行都將處於行級(ROW-LEVEL)獨占式鎖定,其他對象只能查詢這些數據行,不能進行UPDATE、DELETE或SELECT...FOR UPDATE操作。

語法:

  1. FOR UPDATE [OF [schema.]table.column[,[schema.]table.column]..  
  2. [nowait]  

在多表查詢中,使用OF子句來鎖定特定的表,如果忽略了OF子句,那麼所有表中選擇的數據行都將被鎖定。如果這些數據行已經被其他會話鎖定,那麼正常情況下Oracle將等待,直到數據行解鎖。

在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   

以上的相關內容就是對Oracle游標中的更新和刪除的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved