freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

oracle第14章plsql語言基礎-資料下載頁

2025-02-14 11:03本頁面
  

【正文】 OPEN c_emp(20)。 LOOP FETCH c_emp INTO v_emp。 EXIT WHEN c_emp%NOTFOUND。 (||39。 39。||)。 END LOOP。 CLOSE c_emp。 END。 Oracle10g 數據庫基礎教程 104 ( 4)顯式游標的檢索 ?利用簡單循環(huán)檢索游標 ?利用 WHILE循環(huán)檢索游標 ?利用 FOR循環(huán)檢索游標 Oracle10g 數據庫基礎教程 105 ? 利用簡單循環(huán)檢索游標 ? 語法 ? DECLARE ? CURSOR cursor_name IS SELECT… 。 ? BEGIN ? OPEN cursor_name。 ? LOOP ? FETCH… INTO… 。 ? EXIT WHEN cursor_name%NOTFOUND。 ? …… ? END LOOP。 ? CLOSE cursor_name。 ? END。 ? 注意 ? EXIT WHEN子句應該是 FETCH…INTO語句的下一條語句。 Oracle10g 數據庫基礎教程 106 ? 利用簡單循環(huán)統(tǒng)計并輸出各個部門的平均工資。 ? DECLARE ? CURSOR c_dept_stat IS SELECT deptno,avg(sal) avgsal ? FROM emp GROUP BY deptno。 ? v_dept c_dept_stat%ROWTYPE。 ? BEGIN ? OPEN c_dept_stat。 ? LOOP ? FETCH c_dept_stat INTO v_dept。 ? EXIT WHEN c_dept_stat%NOTFOUND。 ? (||39。 39。|| ? )。 ? END LOOP。 ? CLOSE c_dept_stat。 ? END。 Oracle10g 數據庫基礎教程 107 ? 利用 WHILE循環(huán)檢索游標 ? 語法 ? DECLARE ? CURSOR cursor_name IS SELECT… 。 ? BEGIN ? OPEN cursor_name。 ? FETCH… INTO… 。 ? … ? WHILE cursor_name%FOUND LOOP ? FETCH… INTO… 。 ? …… ? END LOOP。 ? CLOSE cursor。 ? END。 ? 注意 ? 在循環(huán)體外進行一次 FETCH操作,作為第一次循環(huán)的條件。 Oracle10g 數據庫基礎教程 108 ? 利用 WHILE循環(huán)統(tǒng)計并輸出各個部門的平均工資。 ? DECLARE ? CURSOR c_dept_stat IS SELECT deptno,avg(sal) avgsal ? FROM emp GROUP BY deptno。 ? v_dept c_dept_stat%ROWTYPE。 ? BEGIN ? OPEN c_dept_stat。 ? FETCH c_dept_stat INTO v_dept。 ? WHILE c_dept_stat%FOUND LOOP ? (||39。 39。|| ? )。 ? FETCH c_dept_stat INTO v_dept。 ? END LOOP。 ? CLOSE c_dept_stat。 ? END。 Oracle10g 數據庫基礎教程 109 ?利用 FOR循環(huán)檢索游標 ?語法 ?DECLARE ?CURSOR cursor_name IS SELECT… 。 ?BEGIN ?FOR loop_variable IN cursor_name LOOP ? …… ?END LOOP。 ?END。 Oracle10g 數據庫基礎教程 110 ? 系統(tǒng)隱含地定義了一個數據類型為 %ROWTYPE的變量,并以此作為循環(huán)的計算器。 ? 系統(tǒng)自動打開游標,不用顯式地使用 OPEN語句打開; ? 系統(tǒng)重復地自動從游標工作區(qū)中提取數據并放入計數器變量中。 ? 系統(tǒng)自動進行 %FOUND屬性檢查以確定是否有數據 ? 當游標工作區(qū)中所有的記錄都被提取完畢或循環(huán)中斷時,系統(tǒng)自動地關閉游標。 Oracle10g 數據庫基礎教程 111 ? 利用 FOR循環(huán)統(tǒng)計并輸出各個部門的平均工資。 ? DECLARE ? CURSOR c_dept_stat IS SELECT deptno,avg(sal) ? avgsal FROM emp GROUP BY deptno。 ? BEGIN ? FOR v_dept IN c_dept_stat LOOP ? (||39。 39。|| ? )。 ? END LOOP。 ? END。 Oracle10g 數據庫基礎教程 112 ? 由于用 FOR循環(huán)檢索游標時,游標的打開、數據的檢索、是否檢索到數據的判斷以及游標的關閉都是自動進行的,因此,可以不在聲明部分定義游標,而在 FOR語句中直接使用子查詢。 ? BEGIN FOR v_emp IN (select * from emp where deptno=10) LOOP (||39。 39。|| )。 END LOOP。 END。 Oracle10g 數據庫基礎教程 113 ( 5)利用游標更新或刪除數據 ? 游標定義語法 ? CURSOR cursor_name IS ? SELECT select_list_item FROM table FOR UPDATE ? [OF column_reference] [NOWAIT]。 ? 注意 ? 打開游標時對相應的表加鎖(通常 SELECT操作不在數據上設置任何鎖),其他用戶不能對該表進行 DML操作; ? 若數據對象已經被其他會話加鎖,則當前會話掛起等待(默認狀態(tài)),若指定了 NOWAIT子句,則不等待,返回ORACLE錯誤。 ? 對于多表查詢時,可以通過 OF子句指定某個要加鎖的表的列的形式,對特定的表加鎖,而其他表不加鎖;否則所有表都加鎖。 ? 當用戶執(zhí)行 COMMIT或 ROLLBACK操作時,數據上的鎖會自動被釋放。 Oracle10g 數據庫基礎教程 114 ? 更新或修改數據的語法為 ? UPDATE|DELETE… ? WHERE CURRENT OF cursor_name ? 注意 ? 如果游標定義時沒有使用 FOR UPDATE子句,則不能利用該游標修改或刪除數據庫中的數據 。 Oracle10g 數據庫基礎教程 115 ?修改員工的工資,如果員工的部門號為 10,則工資提高 100;如果部門號為 20,則工資提高 150;如果部門號為 30,則工資提高 200;否則工資提高 Oracle10g 數據庫基礎教程 116 ? DECLARE ? CURSOR c_emp IS SELECT * FROM emp FOR UPDATE。 ? v_increment NUMBER。 ? BEGIN ? FOR v_emp IN c_emp LOOP ? CASE ? WHEN 10 THEN v_increment:=100。 ? WHEN 20 THEN v_increment:=150。 ? WHEN 30 THEN v_increment:=200。 ? ELSE v_increment:= ? END CASE。 ? UPDATE emp SET sal=sal+v_increment ? WHERE CURRENT OF c_emp。 ? END LOOP。 ? COMMIT。 ? END。 Oracle10g 數據庫基礎教程 117 隱式游標 ?概念 ?所有的 SQL語句都有一個執(zhí)行的緩沖區(qū),隱式游標就是指向該緩沖區(qū)的指針,由系統(tǒng)隱含地打開、處理和關閉。隱式游標又稱為 SQL游標。 ?隱式游標主要用于處理 INSERT、 UPDATE,DELETE以及單行的 SELECT… INTO語句,沒有 OPEN, FETCH, CLOSE等操作命令。 Oracle10g 數據庫基礎教程 118 ? 隱式游標屬性 ? SQL%ISOPEN:布爾型值,判斷隱式游標是否已經打開。對用戶而言,該屬性值始終為 FALSE,因為操作時系統(tǒng)自動打開,操作完后立即自動關閉。 ? SQL%FOUND:布爾型值,判斷當前的操作是否會對數據庫產生影響。如果有數據的插入、刪除、修改或查詢到數據,則返回 TRUE,否則返回 FALSE。 ? SQL%NOTFOUND:布爾型值,判斷當前的操作是否對數據庫產生影響。如果沒有數據的插入、刪除、修改或沒有查詢到數據,則返回 TRUE,否則返回 FALSE。 ? SQL%ROWCOUNT:數值型,返回當前操作所涉及的數據庫中的行數。 Oracle10g 數據庫基礎教程 119 ?修改員工號為 1000的員工工資,將其工資增加 100。如果該員工不存在,則向 emp表中插入一個員工號為 1000,工資為1600的員工。 Oracle10g 數據庫基礎教程 120 ? BEGIN ? UPDATE emp SET sal=sal+100 WHERE empno=1000。 ? IF SQL%NOTFOUND THEN ? INSERT INTO emp(empno,sal) VALUES(1000,1600)。 ? END IF。 ? END。 ? 或 ? BEGIN ? UPDATE emp SET sal=sal+100 WHERE empno=1000。 ? IF SQL%ROWCOUNT=0 THEN ? INSERT INTO emp(empno,sal) VALUES(1000,1600)。 ? END IF。 ? END。 Oracle10g 數據庫基礎教程 121 游標變量 ? 概念 ? 游標變量是一個指向多行查詢結果集的指針,不與特定的查詢綁定,因此具有非常大的靈活性,可以在打開游標變量時定義查詢,可以返回不同結構的結果集 ? 使用游標變量包括 ? 游標引用類型( REF CURSOR) ? 聲明游標變量 ? 打開游標變量 ? 檢索游標變量 ? 關閉游標變量 Oracle10g 數據庫基礎教程 122 ( 1)定義游標引用類型及游標變量 ? 語法 ? TYPE ref_cursor_type_name IS REF CURSOR [RETURN return_type] ? RETURN子句用于指定定義的游標類型返回結果集的類型,該類型必須是記錄類型。如果定義游標引用類型時帶有 RETURN子句,則用其定義的變量稱為強游標變量,否則稱為弱游標變量。 ? 在 Oracle 10g中,系統(tǒng)預定義了一個游標引用類型,稱為 SYS_REFCURSOR,可以直接使用它定義游標變量。 Oracle10g 數據庫基礎教程 123 ? 語法 ? ref_cursor_type_name variable_name。 ? 例如 ? TYPE emp_cursor_type IS REF CURSOR RETURN emp%ROWTYPE。 ? TYPE general_cursor_type IS REF CURSOR。 ? v_emp emp_cursor_type。 ? v_general general_cursor_type。 ? my_cursor SYS_REFCURSOR。 Oracle10g 數據庫基礎教程 124 ( 2)打開游標變量 ? 語法 ? OPEN cursor_variable FOR select_statement。 ? 注意 ? 如果打開的游標變量是強游標變量,則查詢語句的返回類
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1