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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oralce之PL/SQL程式設計(遊標)SQL程式設計
- 6.4. PL/SQL語法——6.4.6. 遊標SQL
- pl/sql中三種遊標迴圈效率對比SQL
- PL/SQL第三章--游標SQL
- PL/SQL 宣告SQL
- Oracle PL/SQLOracleSQL
- pl/sql to_dateSQL
- PL/SQL 運算子SQL
- PL/SQL 條件SQL
- PL/SQL 迴圈SQL
- Oracle PL/SQL塊簡介OracleSQL
- ultraedit高亮顯示pl/sqlSQL
- Oracle 的PL/SQL語言使用OracleSQL
- PL/SQL 條件控制語句SQL
- PL/SQL程式設計急速上手SQL程式設計
- [20240607]PL/SQL中sql語句的註解.txtSQL
- 什麼是SQL遊標?SQL
- 使用profiler測試Oracle PL/SQL效能OracleSQL
- OCP 複習筆記之PL/SQL (1)筆記SQL
- Oracle PL/SQL程式碼中的註釋OracleSQL
- PL/SQL第二章--基本語法SQL
- OCP 複習筆記之PL/SQL (3)筆記SQL
- 6.4. PL/SQL語法——6.4.7. 集合SQL
- pl/sql developer的一個小問題SQLDeveloper
- OCP 複習筆記之PL/SQL (2)筆記SQL
- OCP 複習筆記之PL/SQL (4)筆記SQL
- OCP 複習筆記之PL/SQL (5)筆記SQL
- ORA-06544:PL/SQL:internal error,arguments:[56319]SQLError
- Oracl資料庫+PL/SQL安裝與配置資料庫SQL
- PL/SQL Developer連線到Oracle 12cSQLDeveloperOracle
- openGauss關於PL/SQL匿名塊呼叫測試SQL
- 【OracleEBS】 在PL/SQL中呼叫Oracle ERP請求OracleSQL
- 如何在PL/SQL中讀寫檔案(轉)SQL
- 「Oracle」客戶端 PL/SQL DEVELOPER 安裝使用Oracle客戶端SQLDeveloper
- 【TUNE_ORACLE】列出LOOP套LOOP的PL/SQL程式碼SQL參考OracleOOPSQL
- PL/SQL 連線 Oralce 提示 Could not initialize oci.dllSQL
- PL/SQL Developer下載地址和漢化包地址SQLDeveloper
- Oracle vs PostgreSQL Develop(23) - PL(pg)sql(引數宣告)OracleSQLdev