掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
本文主要介紹的是Oracle游標提取相關的數據的實際操作方案,首先我們要從Oracle游標中得到一行相關的數據,我個人提議你使用FETCH命令。當每一次提取數據后,Oracle游標都指向結果集的下一行。語法如下:

- FETCH cursor_name INTO variable[,variable,...]
對于SELECT定義的Oracle游標的每一列,FETCH變量列表都應該有一個變量與之相對應,變量的類型也要相同。
例:
- SET SERVERIUTPUT ON
- DECLARE
- v_ename EMP.ENAME%TYPE;
- v_salary EMP.SALARY%TYPE;
- CURSOR c_emp IS SELECT ename,salary FROM emp;
- BEGIN
- OPEN c_emp;
- FETCH c_emp INTO v_ename,v_salary;
- DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename
- ||'is'|| v_salary);
- FETCH c_emp INTO v_ename,v_salary;
- DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename
- ||'is'|| v_salary);
- FETCH c_emp INTO v_ename,v_salary;
- DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename
- ||'is'|| v_salary);
- CLOSE c_emp;
- END
這段代碼無疑是非常麻煩的,如果有多行返回結果,可以使用循環(huán)并用Oracle游標屬性為結束循環(huán)的條件,以這種方式提取數據,程序的可讀性和簡潔性都大為提高,下面我們使用循環(huán)重新寫上面的程序:
- SET SERVERIUTPUT ON
- DECLARE
- v_ename EMP.ENAME%TYPE;
- v_salary EMP.SALARY%TYPE;
- CURSOR c_emp IS SELECT ename,salary FROM emp;
- BEGIN
- OPEN c_emp;
- LOOP
- FETCH c_emp INTO v_ename,v_salary;
- EXIT WHEN c_emp%NOTFOUND;
- DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename
- ||'is'|| v_salary);
- END
以上的相關內容就是對Oracle游標提取數據的介紹,望你能有所收獲。
文章出自: http://www.programbbs.com/doc/class10-3.htm

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流