Oracle數(shù)據(jù)庫管理.ppt
《Oracle數(shù)據(jù)庫管理.ppt》由會員分享,可在線閱讀,更多相關(guān)《Oracle數(shù)據(jù)庫管理.ppt(69頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
Oracle數(shù)據(jù)庫管理,本章學(xué)習(xí)目標(biāo)Oracle數(shù)據(jù)庫是一個(gè)復(fù)雜的大型關(guān)系數(shù)據(jù)庫,數(shù)據(jù)庫管理的內(nèi)容很多,包括管理實(shí)例、創(chuàng)建數(shù)據(jù)庫、管理控制文件、日志文件、表空間和數(shù)據(jù)文件、管理臨時(shí)段、數(shù)據(jù)庫對象、數(shù)據(jù)完整性、用戶,使用管理工具等。,第五章Oracle數(shù)據(jù)庫管理,本章內(nèi)容安排,5.1Oracle數(shù)據(jù)庫管理簡介,5.2創(chuàng)建、啟動和關(guān)閉Oracle數(shù)據(jù)庫,4.3存儲過程,4.4觸發(fā)器,4.5游標(biāo),4.6包,4.7函數(shù),,4.1PL/SQL簡介,4.1.1PL/SQL特點(diǎn),4.1.2開發(fā)及運(yùn)行環(huán)境,1.PL/SQL的優(yōu)點(diǎn)(1)PL/SQL是一種高性能的基于事務(wù)處理的語言,能運(yùn)行在任何Oracle環(huán)境中,支持所有數(shù)據(jù)處理命令。通過使用PL/SQL程序單元處理SQL的數(shù)據(jù)定義和數(shù)據(jù)控制元素。(2)PL/SQL支持所有SQL數(shù)據(jù)類型和所有SQL函數(shù),同時(shí)支持所有Oracle對象類型。(3)PL/SQL塊可以被命名和存儲在Oracle服務(wù)器中,同時(shí)也能被其他的PL/SQL程序或SQL命令調(diào)用,任何客戶/服務(wù)器工具都能訪問PL/SQL程序,具有很好的可重用性。(4)可以使用Oracle數(shù)據(jù)工具管理存儲在服務(wù)器中的PL/SQL程序的安全性。可以授權(quán)或撤銷數(shù)據(jù)庫其他用戶訪問PL/SQL程序的能力。(5)PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對任何Oracle能夠運(yùn)行的操作系統(tǒng)都是非常便利的。,4.1.1PL/SQL特點(diǎn),2.PL/SQL的缺點(diǎn)對于SQL,Oracle必須在同一時(shí)間處理每一條SQL語句,在網(wǎng)絡(luò)環(huán)境下這就意味作每一個(gè)獨(dú)立的調(diào)用都必須被oracle服務(wù)器處理,這就占用大量的服務(wù)器時(shí)間,同時(shí)導(dǎo)致網(wǎng)絡(luò)擁擠。而PL/SQL是以整個(gè)語句塊發(fā)給服務(wù)器,這就降低了網(wǎng)絡(luò)擁擠。,服務(wù)器端PL/SQL不需要顯式的安裝或許可。它是Oracle9i數(shù)據(jù)庫的隱式部分,此處有相應(yīng)的文檔。PL/SQL編譯器和解釋器也嵌入到OracleDeveloper中,為開發(fā)者在客戶端和服務(wù)器端提供一致的、可利用的開發(fā)模型。,4.1.2開發(fā)及運(yùn)行環(huán)境,4.2.2常量與變量,4.2.3數(shù)據(jù)類型,4.2.4運(yùn)算符,4.2.1PL/SQL塊,4.2.5流程控制,4.2.6異常處理,4.2PL/SQL語法,,1.塊結(jié)構(gòu),2、塊的命名和匿名,3、塊的執(zhí)行,4.2.1PL/SQL塊,,1.塊結(jié)構(gòu)PL/SQL是一種塊結(jié)構(gòu)的語言,組成PL/SQL程序的單元是邏輯塊,一個(gè)PL/SQL程序包含了一個(gè)或多個(gè)邏輯塊,每個(gè)塊都可以劃分為三個(gè)部分。(1)塊的三個(gè)部分①聲明部分(Declarationsection)聲明部分包含了變量和常量的數(shù)據(jù)類型和初始值。這個(gè)部分是由關(guān)鍵字DECLARE開始,如果不需要聲明變量或常量,那么可以忽略這一部分。②執(zhí)行部分(Executablesection)執(zhí)行部分是PL/SQL塊中的指令部分,由關(guān)鍵字BEGIN開始,所有的可執(zhí)行語句都放在這一部分,其他的PL/SQL塊也可以放在這一部分。③異常處理部分(Exceptionsection)這一部分是可選的,在這一部分中處理異?;蝈e(cuò)誤,對異常處理的詳細(xì)討論在后面進(jìn)行。,,(2)PL/SQL塊語法PL/SQL塊語法結(jié)構(gòu)如下:[DECLARE]declarationstatementsBEGINexecutablestatements[EXCEPTION]exceptionstatementsENDPL/SQL塊中的每一條語句都必須以分號結(jié)束,SQL語句可以多行,但分號表示該語句的結(jié)束。一行中可以有多條SQL語句,他們之間以分號分隔。每一個(gè)PL/SQL塊由BEGIN或DECLARE開始,以END結(jié)束。注釋由--標(biāo)示。,,,2.塊的命名和匿名PL/SQL程序塊可以是一個(gè)命名的程序塊也可以是一個(gè)匿名程序塊,匿名程序塊可以用在服務(wù)器端也可以用在客戶端。執(zhí)行部分包含了所有的語句和表達(dá)式,執(zhí)行部分以關(guān)鍵字BEGIN開始,以關(guān)鍵字EXCEPTION結(jié)束,如果EXCEPTION不存在,那么將以關(guān)鍵字END結(jié)束。分號分隔每一條語句,使用賦值操作符:=或SELECTINTO或FETCHINTO給每個(gè)變量賦值,執(zhí)行部分的錯(cuò)誤將在異常處理部分解決,在執(zhí)行部分中可以使用另一個(gè)PL/SQL程序塊,這種程序塊被稱為嵌套塊。所有的SQL數(shù)據(jù)操作語句都可以用于執(zhí)行部分,PL/SQL塊不能在屏幕上顯示SELECT語句的輸出。SELECT語句必須包括一個(gè)INTO子串或者是游標(biāo)的一部分,執(zhí)行部分使用的變量和常量必須首先在聲明部分聲明,執(zhí)行部分必須至少包括一條可執(zhí)行語句,NULL是一條合法的可執(zhí)行語句,事物控制語句COMMIT和ROLLBACK可以在執(zhí)行部分使用,數(shù)據(jù)定義語言(DataDefinitionlanguage)不能在執(zhí)行部分中使用,DDL語句與EXECUTEIMMEDIATE一起使用或者是DBMS_SQL調(diào)用。,,3.塊的執(zhí)行SQL*PLUS中匿名的PL/SQL塊的執(zhí)行是在PL/SQL塊后輸入/來執(zhí)行。命名的程序與匿名程序的執(zhí)行不同,執(zhí)行命名的程序塊必須使用execute關(guān)鍵字:。如果在另一個(gè)命名程序塊或匿名程序塊中執(zhí)行這個(gè)程序,那么就不需要EXECUTE關(guān)鍵字。,,1.變量,2、常量,3、有效字符集,4.2.2常量與變量,,,1、變量(1)聲明變量聲明變量的語句格式如下:Variable_name[CONSTANT]databyte[NOTNULL][:=|DEFAULTexpression]注意:可以在聲明變量的同時(shí)給變量強(qiáng)制性的加上NOTNULL約束條件,此時(shí)變量在初始化時(shí)必須賦值。(2)給變量賦值給變量賦值有兩種方式:①直接給變量賦值②通過SQLSELECTINTO或FETCHINTO給變量賦值,,,2、常量常量與變量相似,但常量的值在程序內(nèi)部不能改變,常量的值在定義時(shí)賦予,聲明方式與變量相似,但必須包括關(guān)鍵字CONSTANT。常量和變量都可被定義為SQL和用戶定義的數(shù)據(jù)類型。為了減少這部分程序的修改,編程時(shí)使用%TYPE、%ROWTYPE方式聲明變量,使變量聲明的類型與表中的保持同步,隨表的變化而變化,這樣的程序在一定程度上具有更強(qiáng)的通用性。,,,3、有效字符集(1)所有的大寫和小寫英文字母;(2)數(shù)字0-9;(3)符號:0+一*/<>=!一;:.‘@%,“‘?!埃Γ撸??[]PL/SQL標(biāo)識符的最大長度是30個(gè)字符,并且不區(qū)分字母的大小寫。但是適當(dāng)?shù)厥褂么笮?,可以提高程序的可讀性。,,4.2.3數(shù)據(jù)類型,例如:定義如下若干類型變量,常量。DECLAREORDER_NONUMBER(3);CUST_NAMEVARCHAR2(20);ORDER_DATEDATE;EMP_NOINTEGER:=25;PICONSTANTNUMBER:=3.1416;BEGINNULL;END;,,4.2.4運(yùn)算符,與其他程序設(shè)計(jì)語言相同,PL/SQL有一系列操作符。主要有:算術(shù)操作符關(guān)系操作符邏輯操作符,,1.條件結(jié)構(gòu),2、循環(huán)控制,3、GOTO語句,4.2.5流程控制,4、嵌套,1、條件結(jié)構(gòu)1)If條件判斷邏輯結(jié)構(gòu)If條件判斷邏輯結(jié)構(gòu)有三種表達(dá)方式。①表達(dá)式一:ifconditionthenStatementendif該表達(dá)式的功能為:若條件為真,執(zhí)行then后的語句;否則,跳出條件語句執(zhí)行endif后的語句。②表達(dá)式二:ifconditionthenStatements_1elseStatements_2endif該表達(dá)式的功能為:如果條件為真執(zhí)行then后的語句,否則執(zhí)行else后的語句。③表達(dá)式三:ifcondition1thenStatements_1elseifcondition2thenStatements_2elseStatements_3endif該表達(dá)式的功能為:如果if后的條件成立,執(zhí)行then后面的語句,否則判斷elseif后面的條件,條件成立執(zhí)行第二個(gè)then后面的語句,否則執(zhí)行else后的語句。這是條件語句嵌套。IF可以嵌套,可以在IF或IF..ELSE語句中使用IF或IF…ELSE語句。,2)Case表達(dá)式Case語句的基本格式如下:Case變量WHEN表達(dá)式1then值1WHEN表達(dá)式2then值2WHEN表達(dá)式3then值3WHEN表達(dá)式4then值4ELSE值5END;Case語句的功能:首先設(shè)定變量的值作為條件,然后順序檢查表達(dá)式,一旦從中找到與條件匹配的表達(dá)式值,就停止case語句的處理。,2、循環(huán)控制(1)loop…exit…end循環(huán)控制語句LOOP循環(huán)語句是其中最基本的一種。LOOP語句的格式如下:LOOPstatementsENDLOOP;這種循環(huán)語句是沒有終止的,如果不人為控制的話,其中的statements將會無限地執(zhí)行。一般可以通過加入EXIT語句來終結(jié)該循環(huán)。(2)WHILE…..LOOP循環(huán)控制語句WHILE…..LOOP有一個(gè)條件與循環(huán)相聯(lián)系,如果條件為TRUE,則執(zhí)行循環(huán)體內(nèi)的語句,如果結(jié)果為FALSE,則結(jié)束循環(huán)。,(3)FOR..LOOP循環(huán)控制語句FOR..LOOP循環(huán)控制語句的格式如下:FORcounterIN[REVERSE]start_range..end_rangeLOOPstatements;ENDLOOP;LOOP和WHILE循環(huán)的循環(huán)次數(shù)都是不確定的,F(xiàn)OR循環(huán)的循環(huán)次數(shù)是固定的,counter是一個(gè)隱式聲明的變量,初始值是start_range,第二個(gè)值是start_range+1,直到end_range,如果start_range等于end_range,那么循環(huán)將執(zhí)行一次。如果使用了REVERSE關(guān)鍵字,那么范圍將是一個(gè)降序。,3、GOTO語句GOTO語句的格式如下:GOTOLABEL;執(zhí)行GOTO語句時(shí),控制會立即轉(zhuǎn)到由標(biāo)簽標(biāo)記的語句。PL/SQL中對GOTO語句有一些限制,對于塊、循環(huán)、IF語句而言,從外層跳轉(zhuǎn)到內(nèi)層是非法的。,4、嵌套程序塊的內(nèi)部可以有另一個(gè)程序塊這種情況稱為嵌套。嵌套要注意的是變量,定義在最外部程序塊中的變量可以在所有子塊中使用,如果在子塊中定義了與外部程序塊變量相同的變量名,在執(zhí)行子塊時(shí)將使用子塊中定義的變量。子塊中定義的變量不能被父塊引用。同樣GOTO語句不能由父塊跳轉(zhuǎn)道子塊中,反之則是合法的。,,1.PL/SQL的異常,2、預(yù)定義異常,3、自定義異常,4.2.6異常處理,,,1、PL/SQL的異常異常處理塊中包含了與異常相關(guān)的錯(cuò)誤發(fā)生以及當(dāng)錯(cuò)誤發(fā)生時(shí)要進(jìn)行執(zhí)行和處理的代碼。異常部分的語法一般如下:BEGINEXCEPTIONWHENexcep_name1THEN…WHENexcep_name2THEN…WHENOTHERSTHEN…END;,,,2、預(yù)定義異常表4-3常見異常情況表,,,3、自定義異常異常不一定必須是oracle返回的系統(tǒng)錯(cuò)誤,用戶可以在自己的應(yīng)用程序中創(chuàng)建可觸發(fā)及可處理的自定義異常,調(diào)用異常處理需要使用Raise語句。異常情態(tài)的傳播指的是當(dāng)在程序塊的聲明、執(zhí)行、異常部分分別出現(xiàn)異常情態(tài)時(shí),或在本塊中沒有相應(yīng)的異常處理器時(shí)會將這個(gè)異常情態(tài)傳播到哪里,會去激發(fā)那個(gè)塊中的處理器。傳播規(guī)則是這樣的:當(dāng)一個(gè)異常情態(tài)是在塊的執(zhí)行部分引發(fā)的(最常見的),PL/SQL使用下面的規(guī)則確定激活哪個(gè)異常處理器。(1)若當(dāng)前塊對該異常情態(tài)設(shè)置了處理器,則執(zhí)行它并成功完成該塊的執(zhí)行,然后控制轉(zhuǎn)給包含塊。(2)若當(dāng)前塊沒有該處理器,則通過在包含塊中引發(fā)它來傳播異常情態(tài)。然后對包含塊執(zhí)行PL/SQL的異常操作。另外,無論是在聲明部分引發(fā)了一個(gè)異常情態(tài),還是在異常處理部分引發(fā),則該異常情態(tài)將立即傳播給包含塊。在包含塊引用上述規(guī)則進(jìn)行異常情態(tài)的處理,即使在當(dāng)前塊設(shè)置了OTHERS處理器也不會被執(zhí)行。,4.3.2存儲過程的調(diào)用,4.3.3存儲過程的釋放,4.3.4實(shí)例,4.3.1存儲過程的創(chuàng)建,4.3存儲過程,創(chuàng)建存儲過程的語句如下:CREATE[ORREPLACE]PROCEDURE<過程名><參數(shù)1>,「方式l]<數(shù)據(jù)類型1>,<參數(shù)2>,[方式2]<數(shù)據(jù)類型2>,……)IS|ASis_或as完全等價(jià)BEGINPL/SQL過程體END<過程名>,4.3.1存儲過程的創(chuàng)建,過程參數(shù)有以下三種類型:(1)in參數(shù)類型:表示輸入給過程的參數(shù)。(2)out參數(shù)類型:表示參數(shù)在過程中將被賦值,可以傳給過程體的外部。(3)inout參數(shù)類型:表示該類參數(shù)既可以向過程體傳值,也可以在過程體中賦值,以便向過程體外傳值。,存儲過程可以直接用EXECUT命令調(diào)用或PL/SQL程序塊內(nèi)部調(diào)用。用EXECUT命令調(diào)用存儲過程的格式如下:SQL>executeproc_name(par1,par2…);,4.3.2存儲過程的調(diào)用,存儲過程也可以被另外的PL/SQL塊調(diào)用,調(diào)用的語句是:declarepar1,par2;beginproc_name(par1,par2…);end;在調(diào)用前要聲明變量par1,par2,當(dāng)某個(gè)存儲過程不再需要時(shí),應(yīng)將其從內(nèi)存中刪除,以釋放它占用的內(nèi)存資源。釋放過程的語句格式如下:SQL>dropprocedureproc_name;proc_name為過程名。,4.3.3存儲過程的釋放,編寫存儲過程,顯示所指定雇員名所在的部門名和位置。CREATEORREPLACEPROCEDUREDeptMesg(penameemp.ename%TYPE,pdnameOUTdept.dname%TYPE,plocOUTdept.loc%TYPE)ASBEGINSELECTdname,locINTOpdname,plocFROMemp,deptWHEREemp.deptno=dept.deptnoANDemp.ename=pename;END;/VARIABLEvdnameVARCHAR2(14);VARIABLEvlocVARCHAR2(13);EXECUTEDeptMesg(SMITH,:vdname,:vloc);PRINTvdnamevloc;,4.3.4實(shí)例,4.4.2觸發(fā)器的類型,4.4.3觸發(fā)器的創(chuàng)建,4.4.4觸發(fā)器的修改和刪除,4.4.1觸發(fā)器的設(shè)計(jì)規(guī)則,4.4觸發(fā)器,4.4.5實(shí)例,(1)作用范圍清晰(2)不要讓觸發(fā)器去完成Oracle后臺已經(jīng)能夠完成的功能(3)限制觸發(fā)器代碼的行數(shù)(4)不要?jiǎng)?chuàng)建遞歸的觸發(fā)器(5)觸發(fā)器僅在被觸發(fā)語句觸發(fā)時(shí)進(jìn)行集中的,全局的操作,同用戶和數(shù)據(jù)庫應(yīng)用無關(guān)。,4.4.1觸發(fā)器的設(shè)計(jì)規(guī)則,可以創(chuàng)建被如下語句所觸發(fā)的觸發(fā)器:(1)DML語句(DELETE,INSERT,UPDATE);(2)DDL語句(CREATE,ALTER,DROP);(3)數(shù)據(jù)庫操作(SERVERERROR,LOGON,LOGOFF,STARTUP,SHUTDOWN)。,4.4.2觸發(fā)器的類型,1.使用CREATETRIGGER語句創(chuàng)建觸發(fā)器使用CREATETRIGGER語句創(chuàng)建觸發(fā)器的語句格式如下:CREATE[ORREPLACE]TRIGGERname{BEFORE|AFTER}{event[OR...]}ONtable[FOR[EACH]{ROW|STATEMENT}][WHEN(condition)]plsqlblock|callprocedures_statement,4.4.3觸發(fā)器的創(chuàng)建,2.注意事項(xiàng)(1)觸發(fā)器可以聲明為在對記錄進(jìn)行操作之前,在之前(檢查約束之前和INSERT,UPDATE或DELETE執(zhí)行前)或之后(在檢查約束之后和完成INSERT,UPDATE或DELETE操作)觸發(fā).。(2)一個(gè)FOREACHROW執(zhí)行指定操作的觸發(fā)器為操作修改的每一行都調(diào)用一次。(3)SELECT并不更改任何行,因此不能創(chuàng)建SELECT觸發(fā)器.這種場合下規(guī)則和視圖更適合。(4)觸發(fā)器和某一指定的表格有關(guān),當(dāng)該表格備刪除時(shí),任何與該表有關(guān)的觸發(fā)器同樣會被刪除。(5)在一個(gè)表上的每一個(gè)動作只能有一個(gè)觸發(fā)器與之關(guān)聯(lián)。(6)在一個(gè)單獨(dú)的表上,最多只能創(chuàng)建三個(gè)觸發(fā)器與之關(guān)聯(lián),一個(gè)INSERT觸發(fā)器,一個(gè)DELETE觸發(fā)器和一個(gè)UPDATE觸發(fā)器。,刪除觸發(fā)器的語句格式為:DROPTRIGGERnameONtable;一個(gè)觸發(fā)器由三部分組成:觸發(fā)事件或語句、觸發(fā)限制和觸發(fā)器動作。觸發(fā)事件或語句是指引起激發(fā)觸發(fā)器的SQL語句,可為對一指定表的INSERT、UNPDATE或DELETE語句。觸發(fā)限制是指定一個(gè)布爾表達(dá)式,當(dāng)觸發(fā)器激發(fā)時(shí)該布爾表達(dá)式是必須為真。觸發(fā)器作為過程,是PL/SQL塊,當(dāng)觸發(fā)語句發(fā)出、觸發(fā)限制計(jì)算為真時(shí)該過程被執(zhí)行。,4.4.4觸發(fā)器的修改和刪除,編寫一個(gè)數(shù)據(jù)庫觸發(fā)器,當(dāng)任何時(shí)候某個(gè)部門從dept表中刪除時(shí),該觸發(fā)器將從emp表中刪除該部門的所有雇員。CREATEORREPLACETRIGGERdel_emp_deptnoBEFOREDELETEONdeptFOREACHROWBEGINDELETEFROMempWHEREdeptno=:OLD.deptno;END;,4.4.5實(shí)例,4.5.2隱式游標(biāo),4.5.3實(shí)例,4.5.1顯式游標(biāo),4.5游標(biāo),Oracle游標(biāo)是一種用于輕松的處理多行數(shù)據(jù)的機(jī)制,沒有游標(biāo),Oracle開發(fā)人員必須單獨(dú)地、顯式地取回并管理游標(biāo)查詢選擇的每一條記錄。游標(biāo)的另一項(xiàng)功能是,它包含一個(gè)跟蹤當(dāng)前訪問的記錄的指針,這使程序能夠一次處理多條記錄。,,1.聲明游標(biāo),2、打開游標(biāo),3、從游標(biāo)中取回?cái)?shù)據(jù),4.5.1顯式游標(biāo),4、關(guān)閉游標(biāo),,1.聲明游標(biāo)聲明游標(biāo)的語句格式如下:DECLAREcursor_nameISSELECTstatement聲明游標(biāo)完成了下面兩個(gè)目的:(1)給游標(biāo)命名;(2)將一個(gè)查詢與游標(biāo)關(guān)聯(lián)起來。,,,2.打開游標(biāo)打開游標(biāo)的語句格式如下:OPENcursor_name;打開游標(biāo)將激活查詢并識別活動集,可是在執(zhí)行游標(biāo)取回命令之前,并沒有真正取回記錄。OPEN命令還初始化了游標(biāo)指針,使其指向活動集的第一條記錄。游標(biāo)被打開后,直到關(guān)閉之前,取回到活動集的所有數(shù)據(jù)都是靜態(tài)的。換句話說,游標(biāo)忽略所有在游標(biāo)打開之后,對數(shù)據(jù)執(zhí)行的SQLDML命令(INSERT、UPDATE、DELETE和SELECT),因此只有在需要時(shí)才打開它,要刷新活動集,只需關(guān)閉并重新打開游標(biāo)即可。,,,3.從游標(biāo)中取回?cái)?shù)據(jù)FETCH命令以每次一條記錄的方式取回活動集中的記錄。通常將FETCH命令和某種迭代處理結(jié)合起來使用,在迭代處理中,F(xiàn)ETCH命令每執(zhí)行一次,游標(biāo)前進(jìn)到活動集的下一條記錄。FETCH命令的語句格式如下:FETCHcursor_nameINTOrecord_list;執(zhí)行FETCH命令后,活動集中的結(jié)果被取回到PL/SQL變量中,以便在PL/SQL塊中使用。每取回一條記錄,游標(biāo)的指針就移向活動集的下一條記錄。,,,4.關(guān)閉游標(biāo)CLOSE語句關(guān)閉以前打開的游標(biāo),使得活動集不確定。CLOSE語句的格式:CLOSEcursor_name;,,,隱式游標(biāo)也可以叫做SQL游標(biāo)。和顯式的游標(biāo)不同,不能對一個(gè)SQL游標(biāo)顯式的執(zhí)行OPEN,CLOSE和FETCH語句。Oracle隱式的打開SQL游標(biāo)、處理SQL游標(biāo)、然后再關(guān)閉該游標(biāo)。Oracle提供隱式游標(biāo)的主要目的就是利用這些游標(biāo)的屬性來確定SQL語句運(yùn)行的情況。,4.5.2隱式游標(biāo),,,以上游標(biāo)應(yīng)用的完整程序代碼如下:DECLARECURSORC1ISSELECTVIEW_NAMEFROMALL_VIEWSWHEREROWNUMIS變量、常量及數(shù)據(jù)類型定義;游標(biāo)定義;函數(shù)、過程定義和參數(shù)列表及返回類型;END<包名>;,,2.包主體部分創(chuàng)建包主體部分的語句格式如下:CREATEPACKAGEBODY<包名>AS游標(biāo)、函數(shù)、過程的具體定義;END<包名>;,,1.描述部分,2、包體部分,4.6.2實(shí)例,,1.描述部分CREATEPACKAGEznz_package//創(chuàng)建包頭ISman_numNUMBER;//定義變量woman_numNUMBER;CURSOR學(xué)生;//定義游標(biāo)CREATEFUNCTIONf_count(insexIN學(xué)生.sex%TYPE)//定義函數(shù)RETURNNUMBER;//定義返回值類型CREATEPROCEDUREp_count//定義過程(in_sexIN學(xué)生.sex%TYPE,//過程參數(shù)out_numOUTNUMBER);ENDznz_package;//包頭結(jié)束,,2.包體部分CREATEPACKAGEBODYznz_package//創(chuàng)建包體ASCURSOR學(xué)生IS//游標(biāo)具體定義SELECT學(xué)號,姓名FROM學(xué)生WHERE學(xué)號executeman_num:=count_num(‘女’),,3.函數(shù)的釋放當(dāng)函數(shù)不再使用時(shí),要用drop命令將其從內(nèi)存中刪除,例如:SQL>dropfunctioncount_num;,,4.實(shí)例編寫一個(gè)函數(shù)以顯示該雇員在此組織中的工作天數(shù)。CREATEORREPLACEFUNCTIONHire_Day(noemp.empno%TYPE)RETURNNUMBERASvhiredateemp.hiredate%TYPE;vdayNUMBER;BEGINSELECThiredateINTOvhiredateFROMempWHEREempno=no;vday:=CEIL(SYSDATE-vhiredate);RETURNvday;END;,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Oracle 數(shù)據(jù)庫 管理
鏈接地址:http://m.italysoccerbets.com/p-11549555.html