Oracle--plsql遊標建立和使用

來源:互聯網
上載者:User

為什麼要Oracle遊標:

先看這個:

  1. DECLARE   
  2.  v_empno emp.empno%type;   
  3.  v_ename emp.ename%type;   
  4. BEGIN   
  5.  SELECT empno,ename   
  6.  into v_ename,v_empno   
  7.  FROM   emp;   
  8.  dbms_output.put_line(v_empno||' '||v_ename);  
  9. END;  

這個SELECT語句可能返回多條記錄,所以這個指派陳述式可能是錯誤的。所以遊標可以發揮作用了。

什麼是遊標?

遊標(cursor)是Oracle系統在記憶體中開闢的一個工作區,在其中存放SELECT語句返回的查詢結果。

遊標的分類:

隱式遊標:PL/SQL隱式建立並自動管理這一遊標。隱式遊標也叫做SQL遊標。 對於SQL遊標,不能對其顯式地執行OPEN、CLOSE和FETCH語句,但是可以使用遊標屬性從最近執行的SQL語句中擷取資訊。

顯式遊標:由程式員顯式說明及控制,用於從表中取出多行資料,並將多行資料一行一行單獨處理。

隱式遊標:

  • 由Oracle在內部聲明
  • 由Oracle自行管理遊標
  • 可以使用遊標屬性從最近執行的SQL語句中擷取資訊
  • 用於處理DML語句以及返回單行的查詢

隱式遊標屬性:

隱式遊標舉例:

  1. VARIABLE rows_deleted VARCHAR2(30)  
  2. DECLARE  
  3.   v_deptno  NUMBER := 20;  
  4. BEGIN    
  5.   DELETE FROM  emp  
  6.   WHERE  deptno = v_deptno;  
  7.   :rows_deleted := (SQL%ROWCOUNT ||' rows deleted.');  
  8. END;  
  9. /  

返回所刪除行的數量

顯式遊標:由使用者顯式聲明,查詢返回多行記錄

  • 使用遊標時,select語句查詢的結果可以是單條記錄,多條記錄,也可以是零條記錄。
  • 遊標工作區中,存在著一個指標(POINTER),在初始狀態它指向查詢結果的首記錄。
  • 要訪問查詢結果的所有記錄,可以通過FETCH語句,進行指標的移動來實現。
  • 使用遊標進行操作,包括定義遊標、開啟遊標、提取資料以及關閉遊標幾步。

更多Oracle相關資訊見Oracle 專題頁面 http://www.bkjia.com/topicnews.aspx?tid=12

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.