




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章游標管理1回顧PL/SQL 是一種可移植的高性能事務處理語言 PL/SQL 引擎駐留在 Oracle 服務器中PL/SQL 塊由聲明部分、可執行部分和異常處理部分組成 PL/SQL 支持的數據類型包括標量數據類型、LOB 數據類型和屬性類型 控制結構包括條件控制、循環控制和順序控制PL/SQL 支持動態 SQL運行時出現的錯誤叫做異常異常可以分為預定義異常和用戶定義的異常2目標掌握游標管理技巧(重點) 3專業英語Cursor指針Immediate直接的, 緊接的,立即的, 知覺的4游標簡介 2-2逐行處理查詢結果,以編程的方式訪問數據游標的類型:隱式游標REF 游標顯式游標在 PL/SQ
2、L 程序中執行DML SQL 語句時自動創建隱式游標。 顯式游標用于處理返回多行的查詢。REF 游標用于處理運行時才能確定的動態 SQL 查詢的結果游標類型6隱式游標 4-1在PL/SQL中使用DML語句時自動創建隱式游標隱式游標自動聲明、打開和關閉,其名為 SQL通過檢查隱式游標的屬性可以獲得最近執行的DML 語句的信息隱式游標的屬性有:%FOUND SQL 語句影響了一行或多行時為 TRUE%NOTFOUND SQL 語句沒有影響任何行時為TRUE%ROWCOUNT SQL 語句影響的行數%ISOPEN - 游標是否打開,始終為FALSE7隱式游標 4-3SQL SET SERVEROUT
3、PUT ONSQL DECLARE v_TOYID TOYS.ID%type := &TOYID; v_TOYNAME TOYS.NAME%Type := &TOYNAME; BEGIN UPDATE TOYS SET NAME = v_TOYNAME WHERE toyid=v_TOYID; IF SQL%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE(編號未找到。); ELSEDBMS_OUTPUT.PUT_LINE(表已更新);END IF; END;/如果 DML 語句不影響任何行,則返回 True 9隱式游標 4-4SQL SET SERVEROUTPUT ON
4、 SQL BEGINUPDATE vendor_masterSET venname= Rob MathewWHERE vencode=V004;DBMS_OUTPUT.PUT_LINE (SQL%ROWCOUNT); END; /返回 DML 語句影響的行數10SELECT INTO 語句 2-1SQL SET SERVEROUTPUT ONSQL DECLARE empid VARCHAR2(10);desig VARCHAR2(10); BEGINempid:= &Employeeid;SELECT designation INTO desig FROM employee WHERE em
5、pno=empid; EXCEPTIONWHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(職員未找到); END; /如果沒有與SELECT INTO語句中的條件匹配的行,將引發NO_DATA_FOUND異常11SELECT INTO 語句 2-2SQL SET SERVEROUTPUT ONSQL DECLARE empid VARCHAR2(10); BEGINSELECT empno INTO empid FROM employee; EXCEPTIONWHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE(該查詢
6、提取多行); END; /如果 SELECT INTO 語句返回多個值,將引發TOO_MANY_ROWS異常12顯式游標 2-1顯式游標在 PL/SQL 塊的聲明部分定義查詢,該查詢可以返回多行顯式游標的操作過程: 數據庫打開游標30George344Roger245James1Stud_mrksStud_namestud_no提取行變量 關閉游標 13顯式游標 2-2SQLSET SERVER OUTPUT ONSQLDECLARE my_toy_price toys.toyprice%TYPE; CURSOR toy_cur IS SELECT toyprice FROM toys WHE
7、RE toyprice250; BEGIN OPEN toy_cur; LOOP FETCH toy_cur INTO my_toy_price; EXIT WHEN toy_cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE (TOYPRICE=:玩具單價=:|my_toy_price); END LOOP; CLOSE toy_cur; END;聲明游標打開游標提取行關閉游標14使用顯式游標更新行 2-1允許使用游標刪除或更新活動集中的行聲明游標時必須使用 SELECT FOR UPDATE語句 CURSOR IS SELECT statement FOR UPDATE;
8、UPDATE SET WHERE CURRENT OF 更新的語法DELETE FROM WHERE CURRENT OF 刪除的語法 16使用顯式游標更新行 2-2SQL SET SERVEROUTPUT ONSQL DECLARE new_price NUMBER; CURSOR cur_toy IS SELECT toyprice FROM toys WHERE toyprice SET SERVER OUTPUT ONSQL DECLARE CURSOR mytoy_cur IS SELECT toyid, toyname, toyprice FROM toys; BEGIN FOR
9、toy_rec IN mytoy_cur LOOP DBMS_OUTPUT.PUT_LINE( 玩具編號:| |toy_rec.toyid| |玩具名稱:| |toy_rec.toyname| |玩具單價:| |toy_rec.toyprice); END LOOP; END;19REF 游標和游標變量 3-1REF 游標和游標變量用于處理運行時動態執行的 SQL 查詢創建游標變量需要兩個步驟:聲明 REF 游標類型聲明 REF 游標類型的變量用于聲明 REF 游標類型的語法為:TYPE IS REF CURSORRETURN ;20REF 游標和游標變量 3-2TYPE my_curtype
10、 IS REF CURSOR RETURN stud_det%ROWTYPE;order_cur my_curtype; 聲明強類型的 REF 游標打開游標變量的語法如下: OPEN cursor_name FOR select_statement;TYPE my_ctype IS REF CURSOR;stud_cur my_ctype;聲明弱類型的 REF 游標21REF 游標和游標變量 3-3SQL DECLARE TYPE toys_curtype IS REF CURSOR RETURN toys%ROWTYPE; toys_curvar toys_curtype; toys_rec
11、 toys%ROWTYPE; BEGIN OPEN toys_curvar FOR SELECT * FROM toys; FETCH toys_curvar INTO toys_rec; . CLOSE toys_curvar; END;聲明REF游標類型聲明游標變量22游標變量的優點和限制游標變量的功能強大,可以簡化數據處理。游標變量的優點有:可從不同的 SELECT 語句中提取結果集可以作為過程的參數進行傳遞可以引用游標的所有屬性可以進行賦值運算使用游標變量的限制:不能在程序包中聲明游標變量FOR UPDATE子句不能與游標變量一起使用不能使用比較運算符23使用游標變量執行動態 SQL可
12、以使用游標變量執行動態構造的 SQL 語句打開執行動態 SQL 的游標變量的語如下: OPEN cursor_name FOR dynamic_sqlstring USING bind_argument_list;DECLARE r_emp emp%ROWTYPE; TYPE c_type IS REF CURSOR; cur c_type; p_salary NUMBER;BEGIN p_salary := 2500; OPEN cur FOR select * from emp where sal:1 order by sal desc USING p_salary; DBMS_OUTPUT.PUT_LINE(薪水大
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- YY 0459-2025外科植入物丙烯酸類樹脂骨水泥
- 新疆北庭希望環保科技有限公司吉木薩爾縣25萬噸-年危廢處理利用項目(2)環評報告
- 某著名企業DeepSeek系列09DeepSeek政務應用場景與解決方案
- 工業廢水處理與綠色工藝技術
- 工業廢氣治理技術與方法探討
- 工業大數據的分析與應用
- 工業建筑設計及自動化機電系統
- 工業污染防治與綠色制造技術分析
- 工業網絡通信協議與技術標準
- 工業生產中的設備優化管理
- 新生兒收治流程規范與實施
- T/CBMCA 017-2021建筑用覆膜鋼板
- 《重癥監護病房的臨終關懷和姑息治療指南》解讀
- 2025年初中地理會考試卷
- 中國鈦基復合材料行業市場前景預測及投資價值評估分析報告
- 2024年江蘇省無錫市中考歷史真題(原卷版)
- 三級營養師考試復習重點題(附答案)
- 重慶市沙坪壩區2023-2024學年四年級下學期語文期末試卷(含答案)
- 安全領導力與執行力經典培訓課件
- 四年級數學下冊 六 運算律第4課時 乘法的分配律教學設計 蘇教版
- 小學英語閩教版四年級下冊Unit 8 Summer Vacation Part A教學設計及反思
評論
0/150
提交評論