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

正文內(nèi)容

oracle第14章plsql語(yǔ)言基礎(chǔ)-資料下載頁(yè)

2025-02-14 11:03本頁(yè)面
  

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