Oracle進階顯式遊標的使用

來源:互聯網
上載者:User

1、參數化的遊標

作用:多次開啟相同的遊標,返回不同的結果集。遊標聲明部分的形參必須與 OPEN語句中提供的實參相對應(數量與資料類型)。

例1:

DECLARE

v_empno emp1.empno%TYPE;

v_ename emp1.ename%TYPE;

CURSOR emp_cursor

(p_deptno NUMBER, p_job VARCHAR2) IS      ——定義參 數時不需要指定精度

SELECT empno, ename

FROM emp1  

WHERE deptno=p_deptno

AND job=p_job;

BEGIN

OPEN emp_cursor(30,'SALESMAN');  ——帶參數使用的遊標

LOOP

FETCH emp_cursor INTO v_empno, v_ename;

EXIT WHEN emp_cursor%NOTFOUND OR emp_cursor%NOTFOUND IS NULL;

DBMS_OUTPUT.PUT_LINE('empno is  '||v_empno||'  and '||'  ename is  '||v_ename);

END LOOP;

CLOSE emp_cursor;

END;

2、記錄+FOR+遊標參數

DECLARE

CURSOR emp_c (p_job VARCHAR2)

IS SELECT ename, sal FROM emp

WHERE job=p_job FOR UPDATE NOWAIT;

BEGIN

FOR e_record IN  emp_c(UPPER('&jobs'))         ——使用替代變數

 LOOP

 dbms_output.put_line(e_record.ename||'''s sal:'||e_record.sal);  

END LOOP;

END;

/

Enter value for jobs: manager

old   6:   for e_record in emp_c(upper ('&jobs'))

new   6:   for e_record in emp_c(upper('manager'))

JONES's sal:2975

BLAKE's sal:2850

CLARK's sal:2450

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.