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

正文內(nèi)容

游標(biāo)和異常處理oracle(完整版)

  

【正文】 后 為 假 范例:使用隱式游標(biāo)的屬性,判斷對(duì)雇員工資的修改是否成功。隱式游標(biāo)如前所述,DML 操作和單行 SELECT 語(yǔ)句會(huì)使用隱式游標(biāo),它們是:* 插入操作: INSERT。游標(biāo)的作用就是用于臨時(shí)存儲(chǔ)從數(shù)據(jù)庫(kù)中提取的數(shù)據(jù)塊。但是如果要提取多行數(shù)據(jù),就要由程序員定義一個(gè)顯式游標(biāo),并通過(guò)與游標(biāo)有關(guān)的語(yǔ)句進(jìn)行處理。隱式游標(biāo)可以使用名字 SQL 來(lái)訪問(wèn),但要注意,通過(guò) SQL 游標(biāo)名總是只能訪問(wèn)前一個(gè) DML 操作或單行 SELECT 操作的游標(biāo)屬性。 COMMIT。1.聲明游標(biāo)在 DECLEAR 部分按以下格式聲明游標(biāo):CURSOR 游標(biāo)名[(參數(shù) 1 數(shù)據(jù)類型[,參數(shù) 2 數(shù)據(jù)類型 ...])] IS SELECT 語(yǔ)句。3.提取數(shù)據(jù)在可執(zhí)行部分,按以下格式將游標(biāo)工作區(qū)中的數(shù)據(jù)取到變量中。第二種格式一次將一行數(shù)據(jù)取到記錄變量中,需要使用%ROWTYPE 事先定義記錄變量,這種形式使用起來(lái)比較方便,不必分別定義和使用多個(gè)變量。 v_job VARCHAR2(10)。END。(||39。注意:可通過(guò)以下形式獲得記錄變量的內(nèi)容:。,39。BEGINFOR emp_record IN emp_cursor LOOP (|| )。END。()SET SERVEROUTPUT ONDECLARE v_ename VARCHAR2(10)。 END LOOP。練習(xí):去掉 OPEN emp_cursor。)。說(shuō)明:游標(biāo) emp_cursor 定義了兩個(gè)參數(shù):p_deptno 代表部門編號(hào),p_job 代表職務(wù)。()SET SERVEROUTPUT ONDECLARE v_empno NUMBER(5)。 OPEN emp_cursor。說(shuō)明:該程序與前一程序?qū)崿F(xiàn)相同的功能。 EXIT WHEN emp_cur%NOTFOUND。 THEN update emp set sal=sal+40 where current of emp_cur。 CURSOR emp_cursor IS SELECT empno, ename FROM emp WHERE job=v_job。錯(cuò)誤處理的語(yǔ)法如下:EXCEPTIONWHEN 錯(cuò)誤 1[OR 錯(cuò)誤 2] THEN語(yǔ)句序列 1;WHEN 錯(cuò)誤 3[OR 錯(cuò)誤 4] THEN語(yǔ)句序列 2;WHEN OTHERS語(yǔ)句序列 n;END。SET SERVEROUTPUT ONDECLAREv_name VARCHAR2(10)。 WHEN OTHERS THEN (39。SET SERVEROUTPUT ONDECLAREv_temp NUMBER(5):=1。 (39。常見(jiàn)的系統(tǒng)預(yù)定義異常如下表所示。BEGININSERT INTO EMP(EMPNO) VALUES(NULL)。執(zhí)行結(jié)果為:無(wú)法插入 NULL 值!PL/SQL 過(guò)程已成功完成。自定義異常處理錯(cuò)誤的方式同前。)。雇員編號(hào)小于 7000 的下限!39。說(shuō)明:在此例中,自定義了兩個(gè)異常:new_excp1 和 new_excp2,分別代表編號(hào)小于 7000和編號(hào)大于 8000 的錯(cuò)誤。IF new_no7000 THEN ROLLBACK。)。 v_error_message VARCHAR2(255)。和 PL/SQL 程序相比,存儲(chǔ)過(guò)程有很多優(yōu)點(diǎn),具體歸納如下:? 存儲(chǔ)過(guò)程和函數(shù)以命名的數(shù)據(jù)庫(kù)對(duì)象形式存儲(chǔ)于數(shù)據(jù)庫(kù)當(dāng)中。創(chuàng)建和刪除存儲(chǔ)過(guò)程創(chuàng)建存儲(chǔ)過(guò)程,需要有 CREATE PROCEDURE 或 CREATE ANY PROCEDURE 的系統(tǒng)權(quán)限。編寫(xiě)存儲(chǔ)過(guò)程可以使用任何文本編輯器或直接在 SQL*Plus 環(huán)境下進(jìn)行,編寫(xiě)好的存儲(chǔ)過(guò)程必須要在 SQL*Plus 環(huán)境下進(jìn)行編譯,生成編譯代碼,原代碼和編譯代碼在編譯過(guò)程中都會(huì)被存入數(shù)據(jù)庫(kù)。END。步驟 1:登錄 SCOTT 賬戶。如果存在錯(cuò)誤,就會(huì)顯示:警告: 創(chuàng)建的過(guò)程帶有編譯錯(cuò)誤。 如果在存儲(chǔ)過(guò)程中引用了其他用戶的對(duì)象,比如表,則必須有其他用戶授予的對(duì)象訪問(wèn)權(quán)限。END。 EMP_COUNT。正確的使用參數(shù)可以大大增加存儲(chǔ)過(guò)程的靈活性和通用性。在調(diào)用存儲(chǔ)過(guò)程時(shí),主程序的實(shí)際參數(shù)只能是一個(gè)變量,而不能是常量或表達(dá)式。參數(shù)的定義只能給出類型,無(wú)需定義長(zhǎng)度。雇員39。 ROLLBACK。練習(xí):創(chuàng)建插入雇員的存儲(chǔ)過(guò)程 INSERT_EMP,并將雇員編號(hào)等作為參數(shù)。執(zhí)行結(jié)果為:過(guò)程已創(chuàng)建。 說(shuō)明:在存儲(chǔ)過(guò)程中定義了 OUT 類型的參數(shù) P_TOTAL,在主程序調(diào)用該存儲(chǔ)過(guò)程時(shí),傳遞了參數(shù) V_EMPCOUNT。在定義部分的 RETURN 數(shù)據(jù)類型,用來(lái)表示函數(shù)的數(shù)據(jù)類型,也就是返回值的類型,此部分不可省略。步驟 2:在 SQL*Plus 輸入?yún)^(qū)中輸入以下存儲(chǔ)函數(shù)并編譯:CREATE OR REPLACE FUNCTION GET_EMP_NAME(P_EMPNO NUMBER DEFAULT 7788)RETURN VARCHAR2AS V_ENAME VARCHAR2(10)。有重復(fù)雇員編號(hào)!39。步驟 3:調(diào)用該存儲(chǔ)函數(shù),輸入并執(zhí)行以下程序:BEGIN (39。說(shuō)明:函數(shù)的調(diào)用直接出現(xiàn)在程序的 語(yǔ)句中,作為字符串表達(dá)式的一部分。在 SQL*Plus 中輸入并執(zhí)行如下查詢:select TEXT from user_source WHERE NAME=39。EMP_LIST39。結(jié)果:名稱 是否為空? 類型 NAME NOT NULL VARCHAR2(30) TYPE VARCHAR2(12)21 / 21REFERENCED_OWNER VARCHAR2(30) REFERENCED_NAME VARCHAR2(64) REFERENCED_TYPE VARCHAR2(12)REFERENCED_LINK_NAME VARCHAR2(128) SCHEMAID NUMBER DEPENDENCY_TYPE VARCHAR2(4) 說(shuō)明:NAME 為實(shí)體名,TYPE 為實(shí)體類型,REFERENCED_OWNER 為涉及到的實(shí)體擁有者賬戶,REFERENCED_NAME 為涉及到的實(shí)體名,REFERENCED_TYPE 為涉及到的實(shí)體類型。SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME=39。當(dāng) Oracle 調(diào)用一個(gè)無(wú)效的存儲(chǔ)過(guò)程或函數(shù)時(shí),首先試圖對(duì)其進(jìn)行編譯,如果編譯成功則將狀態(tài)置成 VALID 并執(zhí)行,否則給出錯(cuò)誤信息。結(jié)果為:TEXTPROCEDURE EMP_COUNT(P_TOTAL OUT NUMBER)ASBEGIN SELECT COUNT(*) INTO P_TOTAL FROM EMP。試修改雇員編號(hào),重新運(yùn)行調(diào)用部分。|| GET_EMP_NAME(7369))。 RETURN (NULL)。RETURN(V_ENAME)。在函數(shù)的執(zhí)行部分可以有多個(gè) RETURN 語(yǔ)句,但只有一個(gè) RETURN 語(yǔ)句會(huì)被執(zhí)行,一旦執(zhí)行了 RETURN 語(yǔ)句,則函數(shù)結(jié)束并返回調(diào)用環(huán)境。以上程序要覆蓋同名的 EMP_COUNT 存儲(chǔ)過(guò)程,如果不使用 OR REPLACE 選項(xiàng),就會(huì)出現(xiàn)以18 / 21下錯(cuò)誤:ERROR 位于第 1 行:ORA00955: 名稱已由現(xiàn)有對(duì)象使用。BEGINEMP_COUNT(V_EMPCOUNT)。練習(xí):調(diào)用存儲(chǔ)過(guò)程 CHANGE_SALARY,不傳遞參數(shù),使用默認(rèn)參數(shù)值。執(zhí)行結(jié)果為:過(guò)程已創(chuàng)建。 的工資被改為39。步驟 1:登錄 SCOTT 賬戶。參數(shù)名 IN OUT 數(shù)據(jù)類型 DEFAULT 值;定義一個(gè)輸入、輸出參數(shù)變量,兼有以上兩者的功能。參 數(shù) 類 型 說(shuō) 明 IN 定 義 一 個(gè) 輸 入 參 數(shù) 變 量 , 用 于 傳 遞 參 數(shù) 給 存 儲(chǔ) 過(guò) 程 OUT 定 義 一 個(gè) 輸 出 參 數(shù) 變 量 , 用 于 從 存 儲(chǔ) 過(guò) 程 獲 取 數(shù) 據(jù) IN OUT 定 義 一 個(gè) 輸 入 、 輸 出 參 數(shù) 變 量 , 兼 有 以 上 兩 者 的 功 能 參數(shù)的定義形式和作用如下:16 / 21參數(shù)名 IN 數(shù)據(jù)類型 DEFAULT 值;定義一個(gè)輸入?yún)?shù)變量,用于傳遞參數(shù)給存儲(chǔ)過(guò)程。執(zhí)行結(jié)果:過(guò)程已創(chuàng)建。 說(shuō)明:在本例中,存儲(chǔ)過(guò)程是由 SCOTT 賬戶創(chuàng)建的,STUDEN 賬戶獲得 SCOTT 賬戶的授權(quán)后,才能調(diào)用該存儲(chǔ)過(guò)程。但存儲(chǔ)過(guò)程或函數(shù)的所有者必須授予其他用戶執(zhí)行該過(guò)程的權(quán)限。如果要想查看編譯的錯(cuò)誤:SHOW ERRORS PROCEDURE emp_count。BEGIN SELECT COUNT(*) INTO V_TOTAL FROM EMP。參數(shù)可以是變量、常量或表達(dá)式,用法參見(jiàn)下一節(jié)。一個(gè)存儲(chǔ)過(guò)程在不需要時(shí)可以刪除。創(chuàng)建一個(gè)存儲(chǔ)過(guò)程的基本語(yǔ)句如下:CREATE [OR REPLACE] PROCEDURE 存儲(chǔ)過(guò)程名[( 參數(shù)[IN|OUT|IN OUT] 數(shù)據(jù)類型...)]{AS|IS}[說(shuō)明部分]BEGIN可執(zhí)行部分[EXCEPTION
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1