PL/SQL 遊標
一、說明
遊標字面理解就是遊動的游標。
用資料庫語言來描述:遊標是對映在結果集中一行資料上的位置實體,有了遊標使用者就可以訪問結果集中的任意一行資料了,將遊標放置到某行後,即可對該行資料進行操作,例如提取當前行的資料等等。
二、分類
-
顯式遊標
用CURSOR...IS 命令定義的遊標,它可以對查詢語句(SELECT)返回的多條記錄進行處理。
-
隱式遊標
是在執行插入(INSERT)、刪除(DELETE)、修改(UPDATE)和返回單條記錄的查詢(SELECT)語句時有PL/SQL自動定義的。
三、屬性
Oracle 遊標有4個屬性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT
-
%ISOPEN 判斷遊標是否被開啟,如果開啟%ISOPEN 等於true,否則等於false
-
%FOUND %NOTFOUND 判斷遊標所在的行是否有效,如果有效,則%FOUNDD等於true,否則等於false
-
%ROWCOUNT 返回當前位置為止遊標讀取的記錄行數。
四、使用
-
宣告遊標
CURSOR emp_info(vartype number) is select * from emp;
-
開啟遊標
open emp_info;
-
讀取遊標
fetch mycur into varno,varprice;
-
關閉遊標
close emp_info;
五、顯示遊標遍歷
-
方法一
DECLARE V_EMP_INFO EMP%ROWTYPE; CURSOR EMP_INFO IS SELECT * FROM EMP; --1、宣告遊標 BEGIN OPEN EMP_INFO; --2、開啟遊標,傳遞引數值 LOOP FETCH EMP_INFO INTO V_EMP_INFO; --3、提取遊標fetch into IF EMP_INFO%FOUND THEN DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的僱傭日期是' || V_EMP_INFO.HIREDATE); ELSE DBMS_OUTPUT.PUT_LINE('已經處理完結果集了'); EXIT; END IF; END LOOP; CLOSE EMP_INFO; --4、關閉遊標 END;
-
方法二
DECLARE V_EMP_INFO EMP%ROWTYPE; CURSOR EMP_INFO IS SELECT * FROM EMP; --1、宣告遊標 BEGIN OPEN EMP_INFO; --2、開啟遊標,傳遞引數值 LOOP FETCH EMP_INFO INTO V_EMP_INFO; --3、提取遊標fetch into EXIT WHEN EMP_INFO%NOTFOUND; DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的僱傭日期是' || V_EMP_INFO.HIREDATE); END LOOP; DBMS_OUTPUT.PUT_LINE('已經處理完結果集了'); CLOSE EMP_INFO; --4、關閉遊標 END; /
-
方法三
DECLARE V_EMP_INFO EMP%ROWTYPE; CURSOR EMP_INFO IS SELECT * FROM EMP; --1、宣告遊標 BEGIN FOR V_EMP_INFO IN EMP_INFO LOOP DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的僱傭日期是' || V_EMP_INFO.HIREDATE); END LOOP; DBMS_OUTPUT.PUT_LINE('已經處理完結果集了'); END; /
六、隱式遊標處理
DECLARE V_EMP_INFO EMP%ROWTYPE; BEGIN SELECT * INTO V_EMP_INFO FROM EMP WHERE ename='SMITH'; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的僱傭日期是' || V_EMP_INFO.HIREDATE); END IF; DBMS_OUTPUT.PUT_LINE('已經處理完結果集了'); END; /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2664199/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PL/SQL 04 遊標 cursorSQL
- 【PL/SQL】遊標提取迴圈SQL
- PL/SQL-遊標和遊標變數的使用SQL變數
- Oralce之PL/SQL程式設計(遊標)SQL程式設計
- 6.4. PL/SQL語法——6.4.6. 遊標SQL
- 【PL/SQL 學習】隱式遊標學習SQL
- pl/sql中三種遊標迴圈效率對比SQL
- PL/SQL 中如何正確選擇遊標型別SQL型別
- SQL 遊標SQL
- SQL Server遊標SQLServer
- SQL 遊標cursorSQL
- Oracle PL/SQL 關於遊標的介紹OracleSQL
- Sql Server系列:遊標SQLServer
- 什麼是SQL遊標?SQL
- SQL Server遊標使用例子SQLServer
- oracle pl/sql儲存過程內外層遊標cursor巢狀引數化示例OracleSQL儲存過程巢狀
- PL/SQL第三章--游標SQL
- SQL Server遊標使用練習SQLServer
- SQL Server基礎之遊標SQLServer
- SQL 遊標cursor的運用SQL
- [推薦]ORACLE PL/SQL程式設計之四:把遊標說透(不怕做不到,只怕想不到)OracleSQL程式設計
- oracle 遊標中使用 動態 sqlOracleSQL
- PL/SQLSQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-游標-顯式游標SQL
- SQL遊標原理和使用方法(轉)SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-建立游標變數SQL變數
- SQL&PL/SQL (轉)SQL
- PL/SQL 宣告SQL
- PL/SQL cursorSQL
- PL/SQL打包SQL
- PL/SQL DEVSQLdev
- Oracle PL/SQLOracleSQL
- v$sql v$sqlarea v$sql_shared_cursor及父遊標,子游標SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數賦值SQL變數賦值
- v$sql v$sqlarea v$sql_shared_cursor及遊標SQL
- 使用PL/Scope分析PL/SQL程式碼SQL
- PLSQL Language Reference-PL/SQL概覽-PL/SQL架構SQL架構