版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
子程序和程序包回顧q游標(biāo)用于處理查詢結(jié)果集中的數(shù)據(jù)q游標(biāo)類型有:隱式游標(biāo)、顯式游標(biāo)和
REF游標(biāo)q隱式游標(biāo)由
PL/SQL
自動(dòng)定義、打開和關(guān)閉q顯式游標(biāo)用于處理返回多行的查詢q顯式游標(biāo)可以刪除和更新活動(dòng)集中的行q要處理結(jié)果集中所有記錄時(shí),可使用循環(huán)游標(biāo)q在聲明
REF游標(biāo)時(shí),不需要將
SELECT
語句與其關(guān)聯(lián)2目標(biāo)q創(chuàng)建和使用子程序q創(chuàng)建和使用程序包3子程序
2-1q命名的
PL/SQL
塊,編譯并存儲(chǔ)在數(shù)據(jù)庫中。q子程序的各個(gè)部分:q聲明部分q可執(zhí)行部分q異常處理部分(可選)q子程序的分類:q過程
-
執(zhí)行某些操作q函數(shù)
-
執(zhí)行操作并返回值4子程序
2-2子程序的優(yōu)點(diǎn):q模塊化q將程序分解為邏輯模塊q可重用性q可以被任意數(shù)目的程序調(diào)用q可維護(hù)性q簡化維護(hù)操作q安全性q通過設(shè)置權(quán)限,使數(shù)據(jù)更安全5過程
8-1q過程是用于完成特定任務(wù)的子程序q例如:在柜臺(tái)購買車票前往售票廳排隊(duì)等候詢問關(guān)于車票的信息6過程
8-2創(chuàng)建過程的語法:CREATE[ORREPLACE]PROCEDURE<procedurename>[(<parameterlist>)]IS|AS<localvariabledeclaration>創(chuàng)建過程,可指定運(yùn)行過程需傳遞的參數(shù)BEGIN<executablestatements>包括在過程中要執(zhí)行的語句[EXCEPTION<exceptionhandlers>]END;7過程
8-3CREATEORREPLACEPROCEDUREfind_emp(emp_noNUMBER)ASempnameVARCHAR2(20);BEGINSELECTenameINTOempnameFROMEMPWHEREempno=emp_no;DBMS_OUTPUT.PUT_LINE('雇員姓名是
'||empname);EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('雇員編號(hào)未找到');ENDfind_emp;/8過程
8-4過程參數(shù)的三種模式:qINq用于接受調(diào)用程序的值q默認(rèn)的參數(shù)模式qOUTq用于向調(diào)用程序返回值qINOUTq用于接受調(diào)用程序的值,并向調(diào)用程序返回更新的值9過程
8-5執(zhí)行過程的語法:EXECUTE
procedure_name(parameters_list);SQL>CREATEORREPLACEPROCEDUREitemdesc(item_codeINVARCHAR2)ISv_itemdescVARCHAR2(5);BEGINSELECTitemdescINTOv_itemdescFROMitemfileWHEREitemcode=item_code;DBMS_OUTPUT.PUT_LINE(item_code||'項(xiàng)目的說明為'||v_itemdesc);END;/SQL>SETSERVEROUTPUTONSQL>EXECUTEitemdesc('i201');10過程
8-6SQL>CREATEORREPLACEPROCEDUREDECLAREtest(value1IN
VARCHAR2,value1VARCHAR2(5):='i202';value2OUTNUMBER)ISvalue2NUMBER;BEGINidentity
NUMBER;test(value1,value2);BEGINDBMS_OUTPUT.PUT_LINE('value2
的值為'SELECTITEMRATEINTOidentity||TO_CHAR(value2));FROMitemFileWH
EREitemcode=value1;/IFidentity<200THENvalue2:=100;ENDIF;END;11過程
8-7SCQRLE>ATSEETOSRERREVPELRAOCUETPORNOC
E
D
U
R
ESsQwLa>pDp
E
1
C
I
NLAORUET
NUMBER,p2INOUTNUMBER)ISnum1
NUMBER:=100;v
n
_
u
t
emm2pNNUUMMBBEERR;
=200;BEGINvs_wteamp(pnu:=mp11,;
n
u
m
2
)
;pD1B:M=
Sp2_;OUTPUT.PUT_LINE('num1
='||num1);pD2B:M=
Sv__tOemUTp;PUT.PUT_LINE('num2
='||num2);END;/12過程
8-8q將過程的執(zhí)行權(quán)限授予其他用戶:SQL>GRANTEXECUTEONfind_empTOMARTIN;SQL>GRANTEXECUTEONswapTOPUBLIC;q刪除過程:SQL>DROPPROCEDUREfind_emp;13函數(shù)
4-1q函數(shù)是可以返回值的命名的
PL/SQL
子程序。q創(chuàng)建函數(shù)的語法:CREATE[ORREPLACE]FUNCTION<functionname>[(param1,param2)]RETURN<datatype>
IS|AS[localdeclarations]BEGINExecutableStatements;RETURNresult;EXCEPTIONExceptionhandlers;END;14函數(shù)
4-2q定義函數(shù)的限制:q函數(shù)只能接受
IN參數(shù),而不能接受
INOUT
或
OUT參數(shù)q形參不能是
PL/SQL
類型q函數(shù)的返回類型也必須是數(shù)據(jù)庫類型q訪問函數(shù)的兩種方式:q使用
PL/SQL
塊q使用
SQL語句15函數(shù)
4-3q創(chuàng)建函數(shù):CREATEORREPLACEFUNCTIONfun_helloRETURN
VARCHAR2ISBEGINRETURN'朋友,您好';END;/q從
SQL
語句調(diào)用函數(shù):SQL>SELECTfun_helloFROMDUAL;16函數(shù)
4-4CREATEORREPLACEFUNCTIONitem_price_range(priceNUMBER)RETURNVARCHAR2ASmin_priceNUMBER;DECLAREmax_priceNUMBER;PNUMBER:=300;BEGINMSGVARCHAR2(200);SELECTMAX(ITEMRATE),MIN(ITEMRATE)INT
Omax_price,min_priceMSG:=item_price_range(300);FROMitemfile;DBMS_OUTPUT.PUT_LINE(MSG);IFprice>=min_priceANDprice<=max_priceEND;/THENRETURN'輸入的單價(jià)介于最低價(jià)與最高價(jià)之間';ELSERETURN'超出范圍';ENDIF;END;/17過程和函數(shù)的比較過
程函
數(shù)作為
PL/SQL
語句執(zhí)行作為表達(dá)式的一部分調(diào)用在規(guī)格說明中不包含
RETURN子句
必須在規(guī)格說明中包含RETURN子句不返回任何值可以包含
RETURN語句,但是與函
必須包含至少一條
RETURN數(shù)不同,它不能用于返回值語句18自主事務(wù)處理
2-1q自主事務(wù)處理q主事務(wù)處理啟動(dòng)獨(dú)立事務(wù)處理q然后主事務(wù)處理被暫停q自主事務(wù)處理子程序內(nèi)的
SQL操作q然后終止自主事務(wù)處理q恢復(fù)主事務(wù)處理qPRAGMAAUTONOMOUS_TRANSACTION用于標(biāo)記子程序?yàn)樽灾魇聞?wù)處理19自主事務(wù)處理
2-2q自主事務(wù)處理的特征:q與主事務(wù)處理的狀態(tài)無關(guān)q提交或回滾操作不影響主事務(wù)處理q自主事務(wù)處理的結(jié)果對其他事務(wù)是可見的q能夠啟動(dòng)其他自主事務(wù)處理20程序包q程序包是對相關(guān)過程、函數(shù)、變量、游標(biāo)和異常等對象的封裝q程序包由規(guī)范和主體兩部分組成聲明程序包中公共對象。包括類型、變量、常量、異常、游標(biāo)規(guī)范和子程序規(guī)范等21創(chuàng)建程序包
2-1程序包規(guī)范程序包主體CREATE
[OR
REPLACE]PACKAGECREATE
[OR
REPLACE]PACKAGE
BODYpackage_name
IS|AS[Public
item
declarations][Subprogram
specification]END
[package_name];package_name
IS|AS[Private
item
declarations][Subprogram
bodies][BEGINEND
[package_name];22創(chuàng)建程序包
2-2CREATEORREPLACEPACKAGEpack_meCREATEORREPLACEPACKAGEBODYpack_meASISPROCEDUREorder_proc(ornoVARCHAR2)ISPBROFUstatCHAR(1);ECEDGUREoIrNder_proc(ornoVARCHAR2);NCTIONorder_fun(ornosVARCHAR2)RETURNVARCHAR2;ENDpack_me;SELECTostatusINTOstatFROMorder_master/WHEREorderno=orno;……ENDorder_proc;FUNCTIONorder_fun(ornosVARCHAR2)RETURNVARCHAR2ISicode
VARCHAR2(5);ocode
VARCHAR2(5);BEGIN……ENDorder_fun;ENDpack_me;23/程序包的優(yōu)點(diǎn)q模塊化q更輕松的應(yīng)用程序設(shè)計(jì)q信息隱藏q新增功能q性能更佳24程序包中的游標(biāo)
2-1q游標(biāo)的定義分為游標(biāo)規(guī)范和游標(biāo)主體兩部分q在包規(guī)范中聲明游標(biāo)規(guī)范時(shí)必須使用
RETURN子句指定游標(biāo)的返回類型qRETURN子句指定的數(shù)據(jù)類型可以是:q用
%ROWTYPE
屬性引用表定義的記錄類型q程序員定義的記錄類型25程序包中的游標(biāo)
2-2SQL>
CREATE
OR
REPLACE
PACKAGE
BODY
cur_pack
ASCURSOR
ord_cur(vcode
VARCHAR2)SQL>
CREATE
OR
REPLACE
PACKAGE
cur_pack
ISRETURN
order_master%ROWTYPE
ISCURSOR
ord_cur(vcode
VARCHAR2)SELECT
*
FROM
order_master
WHERE
VENCODE=vcode;RETURN
order_master%ROWTYPE;PROCEDURE
ord_pro(vcode
VARCHAR2)
ISPROCEDURE
ord_pro(vcode
VARCHAR2);or_rec
order_master%ROWTYPE;EBNEDGIcNur_pack;/
OPEN
ord_cur(vcode);LOOPFETCH
ord_cur
INTO
or_rec;EXIT
WHEN
ord_cur%NOTFOUND;DBMS_O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地下室水池工程施工方案
- 注意缺陷多動(dòng)障礙癥篩查服務(wù)行業(yè)營銷策略方案
- 物流網(wǎng)絡(luò)設(shè)計(jì)行業(yè)營銷策略方案
- 智能電網(wǎng)管理行業(yè)營銷策略方案
- 國慶節(jié)樓盤熱場活動(dòng)方案
- 2022心理健康日活動(dòng)方案策劃書
- 2021屆高考地理-交通建設(shè)與資源的跨區(qū)域調(diào)配考點(diǎn)復(fù)習(xí)方案2
- 保育員學(xué)期工作計(jì)劃小班簡短2022
- 中職學(xué)生開學(xué)典禮精彩發(fā)言稿(14篇)
- 體育部部長競選演講稿三篇
- 新課標(biāo)-人教版數(shù)學(xué)六年級(jí)上冊第五單元《圓》單元教材解讀
- 2022湖北漢江王甫洲水力發(fā)電有限責(zé)任公司招聘試題及答案解析
- 2019新人教必修1unit2Travelling-Around整單元完整教案
- 大學(xué)生辯論賽評(píng)分標(biāo)準(zhǔn)表
- 診所污水污物糞便處理方案及周邊環(huán)境
- 江蘇開放大學(xué)2023年秋《馬克思主義基本原理 060111》形成性考核作業(yè)2-實(shí)踐性環(huán)節(jié)(占過程性考核成績的30%)參考答案
- 《我是班級(jí)的主人翁》的主題班會(huì)
- 酒店安全設(shè)施及安全制度
- 近代化的早期探索與民族危機(jī)的加劇 單元作業(yè)設(shè)計(jì)
- 租賃機(jī)械設(shè)備施工方案
- 二年級(jí)家長會(huì)語文老師課件
評(píng)論
0/150
提交評(píng)論