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

正文內(nèi)容

[計(jì)算機(jī)軟件及應(yīng)用]plsql程序設(shè)計(jì)-資料下載頁

2025-01-16 07:17本頁面
  

【正文】 標(biāo):就是定義一個(gè)游標(biāo)名,以及與其相對應(yīng)的SELECT 語句。格式:CURSOR cursor_name[(parameter[, parameter]…)] IS select_statement。游標(biāo)參數(shù)只能為輸入?yún)?shù),其格式為:parameter_name [IN] datatype [{:= | DEFAULT} expression]在指定數(shù)據(jù)類型時(shí),不能使用長度約束。如NUMBER(4)、CHAR(10) 等都是錯(cuò)誤的。amp。1048698。 打開游標(biāo):就是執(zhí)行游標(biāo)所對應(yīng)的SELECT 語句,將其查詢結(jié)果放入工作區(qū),并且指針指向工作區(qū)的首部,標(biāo)識游標(biāo)結(jié)果集合。如果游標(biāo)查詢語句中帶有FOR UPDATE選項(xiàng),OPEN 語句還將鎖定數(shù)據(jù)庫表中游標(biāo)結(jié)果集合對應(yīng)的數(shù)據(jù)行。格式:OPEN cursor_name[([parameter =] value[, [parameter =] value]…)]。在向游標(biāo)傳遞參數(shù)時(shí),可以使用與函數(shù)參數(shù)相同的傳值方法,即位置表示法和名稱表示 法。PL/SQL 程序不能用OPEN 語句重復(fù)打開一個(gè)游標(biāo)。amp。1048698。 提取游標(biāo)數(shù)據(jù):就是檢索結(jié)果集合中的數(shù)據(jù)行,放入指定的輸出變量中。格式:FETCH cursor_name INTO {variable_list | record_variable }。amp。1048698。 對該記錄進(jìn)行處理;amp。1048698。 繼續(xù)處理,直到活動集合中沒有記錄;amp。1048698。 關(guān)閉游標(biāo):當(dāng)提取和處理完游標(biāo)結(jié)果集合數(shù)據(jù)后,應(yīng)及時(shí)關(guān)閉游標(biāo),以釋放該游標(biāo)所占用的系統(tǒng)資源,并使該游標(biāo)的工作區(qū)變成無效,不能再使用FETCH 語句取其中數(shù)據(jù)。關(guān)閉后的游標(biāo)可以使用OPEN 語句重新打開。格式:CLOSE cursor_name。 23 24注:定義的游標(biāo)不能有INTO 子句。例1. 游標(biāo)參數(shù)的傳遞方法。DECLARE DeptRec dept%ROWTYPE。 Dept_name %TYPE。 Dept_loc %TYPE。 CURSOR c1 IS SELECT dname, loc FROM dept WHERE deptno CURSOR c2(dept_no NUMBER DEFAULT 10) IS SELECT dname, loc FROM dept WHERE deptno CURSOR c3(dept_no NUMBER DEFAULT 10) IS SELECT * FROM dept WHERE deptno OPEN c2。 LOOP FETCH c2 INTO dept_name, dept_loc。 EXIT WHEN c2%NOTFOUND。 (dept_name||’‘||dept_loc)。 END LOOP。 CLOSE c2。 OPEN c3(dept_no =20)。 LOOP FETCH c3 INTO deptrec。 EXIT WHEN c3%NOTFOUND。 (||’‘|| ||’‘||)。END LOOP。 CLOSE c3。END。%FOUND 布爾型屬性,當(dāng)最近一次讀記錄時(shí)成功返回,則值為TRUE;%NOTFOUND 布爾型屬性,與%FOUND相反;%ISOPEN 布爾型屬性,當(dāng)游標(biāo)已打開時(shí)返回 TRUE; %ROWCOUNT 數(shù)字型屬性,返回已從游標(biāo)中讀取的記錄數(shù)。例2:給工資低于1200 的員工增加工資50。DECLARE v_empno %TYPE。 v_sal %TYPE。 CURSOR c IS SELECT empno, sal FROM emp。BEGIN OPEN c。 LOOP FETCH c INTO v_empno, v_sal。 EXIT WHEN C%NOTFOUND。 IF v_sal3. 游標(biāo)的FOR循環(huán) PL/SQL語言提供了游標(biāo)FOR循環(huán)語句,自動執(zhí)行游標(biāo)的OPEN、FETCH、CLOSE語句和循環(huán)語句的功能;當(dāng)進(jìn)入循環(huán)時(shí),游標(biāo)FOR循環(huán)語句自動打開游標(biāo),并提取第一行游標(biāo)數(shù)據(jù),當(dāng)程序處理完當(dāng)前所提取的數(shù)據(jù)而進(jìn)入下一次循環(huán)時(shí),游標(biāo)FOR循環(huán)語句自動提取下一行數(shù)據(jù)供程序處理,當(dāng)提取完結(jié)果集合中的所有數(shù)據(jù)行后結(jié)束循環(huán),并自動關(guān)閉游標(biāo)。格式:FOR index_variable IN cursor_name[value[, value]…] LOOP 游標(biāo)數(shù)據(jù)處理代碼END LOOP。其中:index_variable為游標(biāo)FOR 循環(huán)語句隱含聲明的索引變量,該變量為記錄變量,其結(jié)構(gòu)與游標(biāo)查詢語句返回的結(jié)構(gòu)集合的結(jié)構(gòu)相同。在程序中可以通過引用該索引記錄變量元素來讀取所提取的游標(biāo)數(shù)據(jù),index_variable中各元素的名稱與游標(biāo)查詢語句選擇列表中所制定的列名相同。如果在游標(biāo)查詢語句的選擇列表中存在計(jì)算列,則必須為這些計(jì)算列指定別名后才能通過游標(biāo)FOR 循環(huán)語句中的索引變量來訪問這些列數(shù)據(jù)。注:不要在程序中對游標(biāo)進(jìn)行人工操作;不要在程序中定義用于控制FOR 循環(huán)的記錄。例3:DECLARE CURSOR c_sal IS SELECT empno, ename, sal FROM emp 。BEGIN隱含打開游標(biāo) 25 FOR v_sal IN c_sal LOOP隱含執(zhí)行一個(gè)FETCH語句 ( to_char()||’‘||||’‘||to_char()) 。隱含監(jiān)測c_sal%NOTFOUNDEND LOOP。隱含關(guān)閉游標(biāo)END。例4:當(dāng)所聲明的游標(biāo)帶有參數(shù)時(shí),通過游標(biāo)FOR 循環(huán)語句為游標(biāo)傳遞參數(shù)。DECLARECURSOR c1(dept_no NUMBER DEFAULT 10) ISSELECT dname, loc FROM dept WHERE deptno WHEN second_exception THEN WHEN OTHERS THEN END。異常處理可以按任意次序排列,但 OTHERS 必須放在最后.167。 預(yù)定義的異常處理預(yù)定義說明的部分 ORACLE 異常錯(cuò)誤錯(cuò)誤號異常錯(cuò)誤信息名稱說明ORA0001Dup_val_on_index試圖破壞一個(gè)唯一性限制ORA0051Timeoutonresource在等待資源時(shí)發(fā)生超時(shí)ORA0061Transactionbackedout由于發(fā)生死鎖事務(wù)被撤消ORA1001InvalidCURSOR試圖使用一個(gè)無效的游標(biāo)ORA1012Notloggedon沒有連接到ORACLEORA1017Logindenied無效的用戶名/口令ORA1403No_data_foundSELECT INTO沒有找到數(shù)據(jù)ORA1422Too_many_rowsSELECT INTO 返回多行ORA1476Zerodivide試圖被零除ORA1722InvalidNUMBER轉(zhuǎn)換一個(gè)數(shù)字失敗ORA6500Storageerror內(nèi)存不夠引發(fā)的內(nèi)部錯(cuò)誤ORA6501Programerror內(nèi)部錯(cuò)誤ORA6502Valueerror轉(zhuǎn)換或截?cái)噱e(cuò)誤 29 30ORA6504Rowtypemismatch縮主游標(biāo)變量與 PL/SQL變量有不兼容行類型ORA6511CURSORalreadyOPEN試圖打開一個(gè)已存在的游標(biāo)ORA6530AccessINTOnull試圖為null 對象的屬性賦值ORA6531Collectionisnull試圖將Exists 以外的集合( collection)方法應(yīng)用于一個(gè)null pl/sql 表上或varray上ORA6532Subscriptoutsidelimit對嵌套或varray索引得引用超出聲明范圍以外ORA6533Subscriptbeyondcount對嵌套或varray 索引得引用大于集合中元素的個(gè)數(shù).對這種異常情況的處理,只需在PL/SQL塊的異常處理部分,直接引用相應(yīng)的異常情況名,并對其完成相應(yīng)的異常錯(cuò)誤處理即可。例1:更新指定員工工資,如工資小于1500,則加100;DECLAREv_empno %TYPE :=amp。empno。v_sal %TYPE。BEGINSELECT sal INTO v_sal FROM emp WHERE empno=v_empno。IF v_sal EXCEPTION。2. 將其定義好的異常情況,與標(biāo)準(zhǔn)的ORACLE錯(cuò)誤聯(lián)系起來,使用EXCEPTION_INIT語句:PRAGMA EXCEPTION_INIT(, );3. 在PL/SQL 塊的異常情況處理部分對異常情況做出相應(yīng)的處理。 30 31例2:刪除指定部門的記錄信息,以確保該部門沒有員工。INSERT INTO dept VALUES(50, ‘FINANCE’, ‘CHICAGO’)。DECLAREv_deptno %TYPE :=amp。deptno。e_deptno_remaining EXCEPTION。PRAGMA EXCEPTION_INIT(e_deptno_remaining, 2292)。/* 2292 是違反一致性約束的錯(cuò)誤代碼 */BEGINDELETE FROM dept WHERE deptno=v_deptno。EXCEPTIONWHEN e_deptno_remaining THEN(39。違反數(shù)據(jù)完整性約束!39。)。WHEN OTHERS THEN(39。發(fā)生其它錯(cuò)誤!39。)。END。167。 用戶自定義的異常處理當(dāng)與一個(gè)異常錯(cuò)誤相關(guān)的錯(cuò)誤出現(xiàn)時(shí),就會隱含觸發(fā)該異常錯(cuò)誤。用戶定義的異常錯(cuò)誤是通過顯式使用 RAISE 語句來觸發(fā)。當(dāng)引發(fā)一個(gè)異常錯(cuò)誤時(shí),控制就轉(zhuǎn)向到 EXCEPTION塊異常錯(cuò)誤部分,執(zhí)行錯(cuò)誤處理代碼。對于這類異常情況的處理,步驟如下:1. 在PL/SQL 塊的定義部分定義異常情況:EXCEPTION。2. RAISE ;3. 在PL/SQL 塊的異常情況處理部分對異常情況做出相應(yīng)的處理。例3:更新指定員工工資,增加100;DECLAREv_empno %TYPE :=amp。empno。no_result EXCEPTION。BEGINUPDATE emp SET sal=sal+100 WHERE empno=v_empno。IF SQL%NOTFOUND THENRAISE no_result。END IF。EXCEPTIONWHEN no_result THEN 31 32(39。你的數(shù)據(jù)更新語句失敗了!39。)。WHEN OTHERS THEN(39。發(fā)生其它錯(cuò)誤!39。)。END。167。 用戶定義的異常處理調(diào)用DBMS_STANDARD(ORACLE提供的包)包所定義的RAISE_APPLICATION_ERROR過程,可以重新定義異常錯(cuò)誤消息,它為應(yīng)用程序提供了一種與ORACLE交互的方法。RAISE_APPLICATION_ERROR 的語法如下:RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors] ) 。這里的error_number 是從 –20,000 到 –20,999 之間的參數(shù),error_message 是相應(yīng)的提示信息(BEGINFUNCTION_bodyEXCEPTION其它語句END。例1. 獲取某部門的工資總和:CREATE OR REPLACE FUNCTION get_salary(Dept_no NUMBER,Emp_count OUT NUMBER)RETURN NUMBER ISV_sum NUMBER。BEGINSELECT SUM(sal), count(*) INTO V_sum, emp_countFROM emp WHERE deptno=dept_no。RETURN v_sum。EXCEPTIONWHEN NO_DATA_FOUND THEN(39。你需要的數(shù)據(jù)不存在!39。)。 36 37WHEN TOO_MANY_ROWS THEN(39。程序運(yùn)行錯(cuò)誤!請使用游標(biāo)39。)。WHEN OTHERS THEN(39。發(fā)生其它錯(cuò)誤!39。)。END get_salary。2. 內(nèi)嵌函數(shù)的調(diào)用函數(shù)聲明時(shí)所定義的參數(shù)稱為形式參數(shù),應(yīng)用程序調(diào)用時(shí)為函數(shù)傳遞的參數(shù)稱為實(shí)際參數(shù)。應(yīng)用程序在調(diào)用函數(shù)時(shí),可以使用以下三種方法向函數(shù)傳遞參數(shù):第一種參數(shù)傳遞格式稱為位置表示法,格式為:argument_value1[,argument_value2 …]例2:計(jì)算某部門的工資總和:DECLAREV_num NUMBER。V_sum NUMBER。BEGINV_sum :=get_salary(30, v_num)。(’30號部門工資總和:’||v_sum||’,人數(shù):’||v_num)。END。第二種參數(shù)傳遞格式稱為名稱表示法,格式為:argument = parameter [,…]其中:argument 為形式參數(shù),它必須與函數(shù)定義時(shí)所聲明的形式參數(shù)名稱相同。Parameter 為實(shí)際參數(shù)。在這種格式中,形勢參數(shù)與實(shí)際參數(shù)成對出現(xiàn),相互間關(guān)系唯一確定,所以參數(shù)的順序可以任意排列。例3:計(jì)算某部門的工資總和:DECLAREV_num NUMBER。V_sum NUMBER。BEGINV_sum :=get_salary(emp_count = v_num, dept_no = 30
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1