Oracle存儲(chǔ)過程操作_第1頁
Oracle存儲(chǔ)過程操作_第2頁
Oracle存儲(chǔ)過程操作_第3頁
Oracle存儲(chǔ)過程操作_第4頁
Oracle存儲(chǔ)過程操作_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院) 第7講 存儲(chǔ)過程操作授課課時(shí):授課課時(shí):4 4課時(shí)(課時(shí)(180180分鐘)分鐘)授課班級(jí):軟件授課班級(jí):軟件091/092091/092制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)Linux公社(LinuxIDC.com)vLinuxLinux公社(公社(LinuxIDC.comLinuxIDC.com)于)于20062006年年9 9月月2525日注日注冊(cè)并開通網(wǎng)站,冊(cè)并開通網(wǎng)站,LinuxLinux現(xiàn)在已經(jīng)成為一種廣受關(guān)現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng),注和支持的一種操作系統(tǒng),IDCIDC是互聯(lián)網(wǎng)數(shù)據(jù)中是互聯(lián)網(wǎng)數(shù)據(jù)中心,心,LinuxIDCLin

2、uxIDC就是關(guān)于就是關(guān)于LinuxLinux的數(shù)據(jù)中心。的數(shù)據(jù)中心。vLinuxLinux公社公社是專業(yè)的是專業(yè)的LinuxLinux系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)布最新布最新LinuxLinux資訊,包括資訊,包括LinuxLinux、UbuntuUbuntu、FedoraFedora、RedHatRedHat、紅旗、紅旗LinuxLinux、LinuxLinux教程、教程、LinuxLinux認(rèn)證認(rèn)證、SUSE LinuxSUSE Linux、AndroidAndroid、OracleOracle、HadoopHadoop等技等技術(shù)。術(shù)。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)3主

3、要內(nèi)容主要內(nèi)容本課目標(biāo)新課引入與項(xiàng)目展示案例1 管理存儲(chǔ)過程案例2 管理函數(shù)案例3 應(yīng)用包課堂實(shí)踐鞏固與提高制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)4本課目標(biāo)知識(shí)知識(shí)目標(biāo)目標(biāo) 掌握管理存儲(chǔ)過程的方法掌握管理存儲(chǔ)過程的方法(重點(diǎn))(重點(diǎn)) 掌握管理函數(shù)的方法掌握管理函數(shù)的方法 掌握管理包的的方法掌握管理包的的方法(重點(diǎn)、(重點(diǎn)、 難點(diǎn))難點(diǎn)) 掌握提高掌握提高SQLSQL處理性能的優(yōu)化方法處理性能的優(yōu)化方法(拓展內(nèi)容)(拓展內(nèi)容)技能技能目標(biāo)目標(biāo) 會(huì)使用存儲(chǔ)過程提高數(shù)據(jù)處理效率會(huì)使用存儲(chǔ)過程提高數(shù)據(jù)處理效率 會(huì)使用函數(shù)提高數(shù)據(jù)處理效率會(huì)使用函數(shù)提高數(shù)據(jù)處理效率 會(huì)使用包封裝存儲(chǔ)過程和函數(shù)會(huì)使用包封裝

4、存儲(chǔ)過程和函數(shù)態(tài)度態(tài)度目標(biāo)目標(biāo)嚴(yán)謹(jǐn)認(rèn)真的工作態(tài)度嚴(yán)謹(jǐn)認(rèn)真的工作態(tài)度語言表達(dá)和與人溝通能力語言表達(dá)和與人溝通能力養(yǎng)成注重提高數(shù)據(jù)處理效率的習(xí)慣養(yǎng)成注重提高數(shù)據(jù)處理效率的習(xí)慣制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)5教學(xué)情境引入新課 掌握創(chuàng)建、修改、查看、刪除和調(diào)用存儲(chǔ)過程的方法;掌握創(chuàng)掌握創(chuàng)建、修改、查看、刪除和調(diào)用存儲(chǔ)過程的方法;掌握創(chuàng)建、修改、查看、刪除和調(diào)用函數(shù)的方法;掌握創(chuàng)建、修改和刪除建、修改、查看、刪除和調(diào)用函數(shù)的方法;掌握創(chuàng)建、修改和刪除包的方法。包的方法。 顯示指定產(chǎn)品的基本信息和總庫(kù)存量,并展示存儲(chǔ)過程、函數(shù)顯示指定產(chǎn)品的基本信息和總庫(kù)存量,并展示存儲(chǔ)過程、函數(shù)和包。和包。工作任務(wù)

5、工作任務(wù)項(xiàng)目展示項(xiàng)目展示制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)6教師示范與講解1任務(wù)一:創(chuàng)建存儲(chǔ)過程任務(wù)一:創(chuàng)建存儲(chǔ)過程案例分析案例分析任務(wù)二:調(diào)用存儲(chǔ)過程任務(wù)二:調(diào)用存儲(chǔ)過程任務(wù)三:查看、修改和刪除存儲(chǔ)過程任務(wù)三:查看、修改和刪除存儲(chǔ)過程制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)7 存儲(chǔ)過程概述v 在在OracleOracle中,可以在數(shù)據(jù)庫(kù)中定義子程序,在子程序中將一些固中,可以在數(shù)據(jù)庫(kù)中定義子程序,在子程序中將一些固定的操作集中起來,由定的操作集中起來,由OracleOracle數(shù)據(jù)庫(kù)服務(wù)器完成,以完成某個(gè)特?cái)?shù)據(jù)庫(kù)服務(wù)器完成,以完成某個(gè)特定的功能。這種子程序稱為存儲(chǔ)過程(定的功能。這種子程序稱為

6、存儲(chǔ)過程(PROCEDUREPROCEDURE)。存儲(chǔ)過程存)。存儲(chǔ)過程存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)部的數(shù)據(jù)字典中,可以為不同的用戶和應(yīng)用程序所儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)部的數(shù)據(jù)字典中,可以為不同的用戶和應(yīng)用程序所共享。創(chuàng)建好的存儲(chǔ)過程經(jīng)編譯以后存儲(chǔ)在數(shù)據(jù)庫(kù),以后調(diào)用該共享。創(chuàng)建好的存儲(chǔ)過程經(jīng)編譯以后存儲(chǔ)在數(shù)據(jù)庫(kù),以后調(diào)用該存儲(chǔ)過程時(shí)可以實(shí)現(xiàn)程序的優(yōu)化和重用。存儲(chǔ)過程時(shí)可以實(shí)現(xiàn)程序的優(yōu)化和重用。v 使用存儲(chǔ)過程的優(yōu)點(diǎn):使用存儲(chǔ)過程的優(yōu)點(diǎn):存儲(chǔ)過程在服務(wù)器端運(yùn)行,執(zhí)行速度快;數(shù)據(jù)存儲(chǔ)過程執(zhí)行一次后駐留在Oracle數(shù)據(jù)庫(kù)服務(wù)器的高速Cache中,以后再次調(diào)用存儲(chǔ)過程時(shí),只需從高速Cache中調(diào)用已經(jīng)編譯后的代碼即可,從而提

7、高了系統(tǒng)性能;存儲(chǔ)過程確保了數(shù)據(jù)庫(kù)的安全;自動(dòng)完成需要預(yù)先執(zhí)行的任務(wù)。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)Linux公社(LinuxIDC.com)vLinuxLinux公社(公社(LinuxIDC.comLinuxIDC.com)于)于20062006年年9 9月月2525日注日注冊(cè)并開通網(wǎng)站,冊(cè)并開通網(wǎng)站,LinuxLinux現(xiàn)在已經(jīng)成為一種廣受關(guān)現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng),注和支持的一種操作系統(tǒng),IDCIDC是互聯(lián)網(wǎng)數(shù)據(jù)中是互聯(lián)網(wǎng)數(shù)據(jù)中心,心,LinuxIDCLinuxIDC就是關(guān)于就是關(guān)于LinuxLinux的數(shù)據(jù)中心。的數(shù)據(jù)中心。vLinuxLinux公社公社是專業(yè)

8、的是專業(yè)的LinuxLinux系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)布最新布最新LinuxLinux資訊,包括資訊,包括LinuxLinux、UbuntuUbuntu、FedoraFedora、RedHatRedHat、紅旗、紅旗LinuxLinux、LinuxLinux教程、教程、LinuxLinux認(rèn)證認(rèn)證、SUSE LinuxSUSE Linux、AndroidAndroid、OracleOracle、HadoopHadoop等技等技術(shù)。術(shù)。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)9 存儲(chǔ)過程概述v 用戶自定義存儲(chǔ)過程只能定義在當(dāng)前數(shù)據(jù)庫(kù)中。在管理存儲(chǔ)過程用戶自定義存儲(chǔ)過程只能定義在當(dāng)前數(shù)

9、據(jù)庫(kù)中。在管理存儲(chǔ)過程之前,首先需要保證管理之前,首先需要保證管理存儲(chǔ)過程存儲(chǔ)過程的用戶已經(jīng)獲相應(yīng)的系統(tǒng)權(quán)限。的用戶已經(jīng)獲相應(yīng)的系統(tǒng)權(quán)限。既可以通過既可以通過OEMOEM或或SQL DeveloperSQL Developer等可視化工具管理存儲(chǔ)過程,也等可視化工具管理存儲(chǔ)過程,也可以通過可以通過PL/SQLPL/SQL管理存儲(chǔ)過程。管理存儲(chǔ)過程。v 創(chuàng)建存儲(chǔ)過程時(shí),在存儲(chǔ)過程內(nèi)可以包含各種創(chuàng)建存儲(chǔ)過程時(shí),在存儲(chǔ)過程內(nèi)可以包含各種PL/SQLPL/SQL語句,但以語句,但以下語句除外:下語句除外:v CREATE VIEWv CREATE PROCEDUREv CREATE TRIGGER制作

10、:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)10 創(chuàng)建存儲(chǔ)過程使用PL/SQLv PL/SQLPL/SQL中的中的CREATE PROCEDURECREATE PROCEDURE命令用于創(chuàng)建存儲(chǔ)過程:命令用于創(chuàng)建存儲(chǔ)過程:參數(shù)說明:參數(shù)說明:參數(shù)模式指出參數(shù)的類型,有3種參數(shù)模式:l IN(輸入?yún)?shù))l OUT(輸出參數(shù))IN OUT(輸入輸出參數(shù));CREATECREATE OROR REPLACEREPLACE PROCEDUREPROCEDURE 用戶方案. ( 參數(shù)1 參數(shù)模式 數(shù)據(jù)類型 , ) ISIS | ASAS參數(shù)1 數(shù)據(jù)類型,BEGINBEGINPL/SQL語句ENDEND 存儲(chǔ)過程名;

11、制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)11 課堂演示創(chuàng)建存儲(chǔ)過程v 【案例案例7-17-1】創(chuàng)建存儲(chǔ)過程,根據(jù)產(chǎn)品編號(hào)查詢產(chǎn)品說明創(chuàng)建存儲(chǔ)過程,根據(jù)產(chǎn)品編號(hào)查詢產(chǎn)品說明。-定義存儲(chǔ)過程定義存儲(chǔ)過程CREATE OR REPLACE PROCEDURE SCOTT.PRC_GETDESCRIPTION (pid IN CHAR, pdesc OUT VARCHAR2)ASBEGINSELECTDESCRIPTION INTO pdescFROMSCOTT.PRODUCTWHEREPRODID = pid;END PRC_GETDESCRIPTION; - -編譯存儲(chǔ)過程編譯存儲(chǔ)過程按F5鍵編譯存儲(chǔ)

12、過程制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)12 調(diào)用存儲(chǔ)過程使用PL/SQLv 使用使用PL/SQLPL/SQL調(diào)用存儲(chǔ)過程的基本語法格式為:調(diào)用存儲(chǔ)過程的基本語法格式為:DECLAREDECLARE參數(shù)1 數(shù)據(jù)類型, BEGINBEGIN用戶方案. ( 參數(shù)1 , ) ; ENDEND;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)13 課堂演示調(diào)用存儲(chǔ)過程v 【案例案例7-27-2】調(diào)用案例調(diào)用案例7-17-1中的中的存儲(chǔ)過程存儲(chǔ)過程。-調(diào)用存儲(chǔ)過程調(diào)用存儲(chǔ)過程DECLARE pdesc VARCHAR2(500);BEGIN PRC_GETDESCRIPTION(P070920001,pdesc);

13、 DBMS_OUTPUT.PUT_LINE(pdesc);END;按F9鍵在DBMS Output窗口中將得到以下輸出信息: anonymous block completed 紅玫瑰能夠表達(dá)情侶之間的愛意制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)14 查看、修改和刪除存儲(chǔ)過程v 使用使用CREATE OR REPLACE PROCEDURECREATE OR REPLACE PROCEDURE命令既可以創(chuàng)建存儲(chǔ)過程,命令既可以創(chuàng)建存儲(chǔ)過程,也可以修改存儲(chǔ)過程。也可以修改存儲(chǔ)過程。v 使用使用DROP PROCEDUREDROP PROCEDURE命令刪除存儲(chǔ)過程:命令刪除存儲(chǔ)過程:DROP PRO

14、CEDUREDROP PROCEDURE 用戶方案.;v 使用使用DESCRIBEDESCRIBE命令可以查看存儲(chǔ)過程的信息:命令可以查看存儲(chǔ)過程的信息:DESCDESCRIBERIBE 用戶方案.;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)Linux公社(LinuxIDC.com)vLinuxLinux公社(公社(LinuxIDC.comLinuxIDC.com)于)于20062006年年9 9月月2525日注日注冊(cè)并開通網(wǎng)站,冊(cè)并開通網(wǎng)站,LinuxLinux現(xiàn)在已經(jīng)成為一種廣受關(guān)現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng),注和支持的一種操作系統(tǒng),IDCIDC是互聯(lián)網(wǎng)數(shù)據(jù)中是互聯(lián)網(wǎng)數(shù)據(jù)中心,心

15、,LinuxIDCLinuxIDC就是關(guān)于就是關(guān)于LinuxLinux的數(shù)據(jù)中心。的數(shù)據(jù)中心。vLinuxLinux公社公社是專業(yè)的是專業(yè)的LinuxLinux系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)布最新布最新LinuxLinux資訊,包括資訊,包括LinuxLinux、UbuntuUbuntu、FedoraFedora、RedHatRedHat、紅旗、紅旗LinuxLinux、LinuxLinux教程、教程、LinuxLinux認(rèn)證認(rèn)證、SUSE LinuxSUSE Linux、AndroidAndroid、OracleOracle、HadoopHadoop等技等技術(shù)。術(shù)。制作:馮向科(湖

16、南鐵道職業(yè)技術(shù)學(xué)院)16 課堂演示查看和刪除存儲(chǔ)過程-查看存儲(chǔ)過程查看存儲(chǔ)過程DESC SCOTT.PRC_GETDESCRIPTION ;v 【案例案例7-37-3】查看用戶方案查看用戶方案SCOTTSCOTT中的中的PRC_GETDESCRIPTIONPRC_GETDESCRIPTION存儲(chǔ)過存儲(chǔ)過程,然后將其刪除。程,然后將其刪除。-刪除存儲(chǔ)過程刪除存儲(chǔ)過程DROP PROCEDURE SCOTT.PRC_GETDESCRIPTION;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)17學(xué)生模仿1任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例7-1】的內(nèi)容的內(nèi)容任務(wù)二:學(xué)生模仿完成任務(wù)二:學(xué)生模

17、仿完成【案例案例7-2】的內(nèi)容的內(nèi)容任務(wù)三:學(xué)生模仿完成任務(wù)三:學(xué)生模仿完成【案例案例7-3】的內(nèi)容的內(nèi)容制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)18教師示范與講解2任務(wù)一:創(chuàng)建函數(shù)任務(wù)一:創(chuàng)建函數(shù)案例分析案例分析任務(wù)二:調(diào)用函數(shù)任務(wù)二:調(diào)用函數(shù)任務(wù)三:查看、修改和刪除函數(shù)任務(wù)三:查看、修改和刪除函數(shù)制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)19 函數(shù)概述v 函數(shù)(函數(shù)(FUNCTIONFUNCTION)與存儲(chǔ)過程類似,也是組成一個(gè)子程序的一組)與存儲(chǔ)過程類似,也是組成一個(gè)子程序的一組PL/SQLPL/SQL語句。函數(shù)接受語句。函數(shù)接受0 0個(gè)或多個(gè)輸入?yún)?shù),僅返回一個(gè)值,返回個(gè)或多個(gè)輸入?yún)?shù),僅返回一

18、個(gè)值,返回值的數(shù)據(jù)類型在創(chuàng)建函數(shù)時(shí)定義。值的數(shù)據(jù)類型在創(chuàng)建函數(shù)時(shí)定義。v 使用函數(shù)和使用存儲(chǔ)過程具有一樣的優(yōu)點(diǎn)。使用函數(shù)和使用存儲(chǔ)過程具有一樣的優(yōu)點(diǎn)。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)20 創(chuàng)建函數(shù)使用PL/SQLv PL/SQLPL/SQL中的中的CREATE FUNCTIONCREATE FUNCTION命令用于創(chuàng)建函數(shù):命令用于創(chuàng)建函數(shù):各個(gè)參數(shù)的格式與各個(gè)參數(shù)的格式與CREATE PROCEDURECREATE PROCEDURE中的參數(shù)格式相同。中的參數(shù)格式相同。CREATECREATE OROR REPLACEREPLACE FUNCTIONFUNCTION 用戶方案. ( 參數(shù)

19、1 參數(shù)模式 數(shù)據(jù)類型 , ) RETURNRETURN 數(shù)據(jù)類型 ISIS | ASAS參數(shù)1 數(shù)據(jù)類型, BEGINBEGINPL/SQL語句 ENDEND 函數(shù)名;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)21 課堂演示創(chuàng)建函數(shù)v 【案例案例7-47-4】在用戶方案在用戶方案SCOTTSCOTT中創(chuàng)建函數(shù)中創(chuàng)建函數(shù)FUN_TOTALVALUEFUN_TOTALVALUE,它根,它根據(jù)客戶編號(hào)查詢?cè)摽蛻舻挠唵慰偨痤~據(jù)客戶編號(hào)查詢?cè)摽蛻舻挠唵慰偨痤~。-定義函數(shù)定義函數(shù) CREATE OR REPLACE FUNCTION SCOTT.FUN_TOTALVALUE( cid SCOTT.ORDERS

20、.CUSTID%TYPE )-cid-cid遵循與遵循與CUSTIDCUSTID屬性相同的數(shù)據(jù)類型屬性相同的數(shù)據(jù)類型 RETURN NUMBER AS TOTVALUENUMBER; BEGIN SELECTSUM(PRICE * OD.QUANTITY) INTO TOTVALUE FROM SCOTT.ORDERS O JOIN SCOTT.ORDERDETAILS OD ON O.ORDERID = OD.ORDERID JOIN SCOTT.SUPPLY S ON OD.SUPPID = S.SUPPID AND OD.PRODID = S.PRODID WHERE CUSTID =

21、cid; RETURNTOTVALUE; END FUN_TOTALVALUE;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)22 課堂演示調(diào)用函數(shù)v 【案例案例7-57-5】調(diào)用案例調(diào)用案例7-47-4中的函數(shù)。中的函數(shù)。-調(diào)用函數(shù)調(diào)用函數(shù) DECLARE cid SCOTT.ORDERS.CUSTID%TYPE; BEGIN cid := C070902003; DBMS_OUTPUT.PUT_LINE(cid | : | SCOTT.FUN_TOTALVALUE(cid); END;按F9鍵在DBMS Output窗口中將得到以下輸出信息: anonymous block completed C0

22、70902003 : 53.5制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)Linux公社(LinuxIDC.com)vLinuxLinux公社(公社(LinuxIDC.comLinuxIDC.com)于)于20062006年年9 9月月2525日注日注冊(cè)并開通網(wǎng)站,冊(cè)并開通網(wǎng)站,LinuxLinux現(xiàn)在已經(jīng)成為一種廣受關(guān)現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng),注和支持的一種操作系統(tǒng),IDCIDC是互聯(lián)網(wǎng)數(shù)據(jù)中是互聯(lián)網(wǎng)數(shù)據(jù)中心,心,LinuxIDCLinuxIDC就是關(guān)于就是關(guān)于LinuxLinux的數(shù)據(jù)中心。的數(shù)據(jù)中心。vLinuxLinux公社公社是專業(yè)的是專業(yè)的LinuxLinux系統(tǒng)門戶網(wǎng)

23、站,實(shí)時(shí)發(fā)系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)布最新布最新LinuxLinux資訊,包括資訊,包括LinuxLinux、UbuntuUbuntu、FedoraFedora、RedHatRedHat、紅旗、紅旗LinuxLinux、LinuxLinux教程、教程、LinuxLinux認(rèn)證認(rèn)證、SUSE LinuxSUSE Linux、AndroidAndroid、OracleOracle、HadoopHadoop等技等技術(shù)。術(shù)。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)24 查看、修改和刪除函數(shù)v 使用使用CREATE OR REPLACE FUNCTIONCREATE OR REPLACE FUNCTION命令既可

24、以創(chuàng)建函數(shù),也可以命令既可以創(chuàng)建函數(shù),也可以修改函數(shù)。修改函數(shù)。v 使用使用DROP FUNCTIONDROP FUNCTION命令刪除函數(shù):命令刪除函數(shù):DROP FUNCTIONDROP FUNCTION 用戶方案.;v 使用使用DESCRIBEDESCRIBE命令可以查看函數(shù)的信息:命令可以查看函數(shù)的信息:DESCDESCRIBERIBE 用戶方案.;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)25 課堂演示修改和刪除函數(shù)-查看函數(shù)查看函數(shù)DESC SCOTT.FUN_TOTALVALUE ;v 【案例案例7-67-6】查看用戶方案查看用戶方案SCOTTSCOTT中的中的FUN_TOTALVAL

25、UEFUN_TOTALVALUE函數(shù),然后函數(shù),然后將其刪除。將其刪除。-刪除函數(shù)刪除函數(shù)DROP FUNCTION SCOTT.FUN_TOTALVALUE;制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)26學(xué)生模仿2任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例7-4】的內(nèi)容的內(nèi)容任務(wù)二:學(xué)生模仿完成任務(wù)二:學(xué)生模仿完成【案例案例7-5】的內(nèi)容的內(nèi)容任務(wù)三:學(xué)生模仿完成任務(wù)三:學(xué)生模仿完成【案例案例7-6】的內(nèi)容的內(nèi)容制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)27教師示范與講解3任務(wù)一:創(chuàng)建包頭和包體任務(wù)一:創(chuàng)建包頭和包體案例分析案例分析任務(wù)二:調(diào)用包中的對(duì)象任務(wù)二:調(diào)用包中的對(duì)象制作:馮向科(湖南鐵

26、道職業(yè)技術(shù)學(xué)院)28 包v 包(包(PACKAGEPACKAGE)將一些有聯(lián)系的對(duì)象放置在其內(nèi)部,構(gòu)成一個(gè)邏)將一些有聯(lián)系的對(duì)象放置在其內(nèi)部,構(gòu)成一個(gè)邏輯分組,這些對(duì)象包括存儲(chǔ)過程、函數(shù)、游標(biāo)、自定義的類型和輯分組,這些對(duì)象包括存儲(chǔ)過程、函數(shù)、游標(biāo)、自定義的類型和 變量等。變量等。v 包擁有兩個(gè)獨(dú)立的部分:包頭和包體,它們都存儲(chǔ)在數(shù)據(jù)字典中。包擁有兩個(gè)獨(dú)立的部分:包頭和包體,它們都存儲(chǔ)在數(shù)據(jù)字典中。定義一個(gè)包,要分別定義包頭和包體。定義一個(gè)包,要分別定義包頭和包體。 在包頭中僅定義存儲(chǔ)過程名、函數(shù)名或其他對(duì)象名及它們的參數(shù)。存儲(chǔ)過程或函數(shù)的執(zhí)行代碼將在包體中定義。 包體是一個(gè)數(shù)據(jù)字典對(duì)象,它只

27、包含在包頭中已經(jīng)預(yù)定義的子程序的代碼。只有在包頭成功編譯后,包體才能被編譯。在包頭中定義(不是預(yù)定義)的對(duì)象可以直接在包體中使用,不必再在包體中定義。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)29 定義包頭v OracleOracle的的PL/SQLPL/SQL語句提供了語句提供了CREATE PACKAGECREATE PACKAGE命令來定義包頭,其命令來定義包頭,其基本語法格式為:基本語法格式為: CREATECREATE OROR REPLACEREPLACE PACKAGEPACKAGE 用戶方案用戶方案.包名包名 ISIS | | ASAS包頭描述;包頭描述;參數(shù)說明:參數(shù)說明:包名:將

28、要?jiǎng)?chuàng)建的包的名稱,它必須符合PL/SQL的標(biāo)識(shí)符命名規(guī)則;包頭描述:可以是變量、常量及數(shù)據(jù)類型定義和游標(biāo)定義,也可以是存儲(chǔ)過程、函數(shù)定義和參數(shù)列表返回類型。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)30 定義包體v CREATE PACKAGE BODYCREATE PACKAGE BODY命令定義包體,其基本語法格式為:命令定義包體,其基本語法格式為: CREATECREATE OROR REPLACEREPLACE PACKAGE BODYPACKAGE BODY 用戶方案用戶方案. ISIS | | ASAS包體描述;包體描述;參數(shù)說明:參數(shù)說明:包名:將要?jiǎng)?chuàng)建的包的名稱,必須符合PL/SQL

29、的標(biāo)識(shí)符命名規(guī)則,該名稱可以和包頭所在的包名相同,也可以不相同;包頭描述:游標(biāo)、存儲(chǔ)過程或者函數(shù)的定義。包體是可選的,如果在包頭中沒有聲明任何存儲(chǔ)過程或者函數(shù),則該包體就不存在,即使在包頭中有變量、游標(biāo)或者類型的聲明也不例外。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)31 引用包中對(duì)象v 在包中定義的任何對(duì)象既可以在包內(nèi)使用,也可以在包外使用。在包中定義的任何對(duì)象既可以在包內(nèi)使用,也可以在包外使用。在外部引用包中對(duì)象時(shí),可以通過使用包名作為前綴對(duì)其進(jìn)行引在外部引用包中對(duì)象時(shí),可以通過使用包名作為前綴對(duì)其進(jìn)行引用,其語法格式如下:用,其語法格式如下: BEGIN BEGIN用戶方案.包名.對(duì)象名; E

30、NDEND; 在包內(nèi)使用屬于同一個(gè)包的對(duì)象時(shí),可以省略包名的前綴部分。在包內(nèi)使用屬于同一個(gè)包的對(duì)象時(shí),可以省略包名的前綴部分。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)32 課堂演示創(chuàng)建包-1. -1. 定義包頭定義包頭CREATE OR REPLACE PACKAGE SCOTT.PKG_DISPLAYPRODUCT IS -聲明存儲(chǔ)過程聲明存儲(chǔ)過程 PROCEDURE PRC_GETPRODUCTINFO ( pidSCOTT.PRODUCT.PRODID%TYPE, pnameOUTSCOTT.PRODUCT.PRODNAME%TYPE, ctname OUTSCOTT.CATEGORY.CA

31、TEGORYNAME%TYPE, dscpOUTSCOTT.PRODUCT.DESCRIPTION%TYPE ); -聲明函數(shù)聲明函數(shù) FUNCTION FUN_GETSTOCK ( pid SCOTT.PRODUCT.PRODID%TYPE ) RETURN NUMBER;END PKG_DISPLAYPRODUCT;v 【案例案例7-77-7】創(chuàng)建包,其中包括存儲(chǔ)過程實(shí)現(xiàn)根據(jù)產(chǎn)品編號(hào)查詢創(chuàng)建包,其中包括存儲(chǔ)過程實(shí)現(xiàn)根據(jù)產(chǎn)品編號(hào)查詢產(chǎn)品名稱、類別名稱和產(chǎn)品描述的功能,函數(shù)實(shí)現(xiàn)根據(jù)產(chǎn)品編號(hào)產(chǎn)品名稱、類別名稱和產(chǎn)品描述的功能,函數(shù)實(shí)現(xiàn)根據(jù)產(chǎn)品編號(hào)返回該產(chǎn)品總庫(kù)存量的功能。返回該產(chǎn)品總庫(kù)存量的功能

32、。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)33 課堂演示創(chuàng)建包-2. -2. 定義包體定義包體CREATE OR REPLACE PACKAGE BODY SCOTT.PKG_DISPLAYPRODUCTAS - -存儲(chǔ)過程的執(zhí)行部分存儲(chǔ)過程的執(zhí)行部分 PROCEDURE PRC_GETPRODUCTINFO ( pidSCOTT.PRODUCT.PRODID%TYPE, pnameOUTSCOTT.PRODUCT.PRODNAME%TYPE, ctnameOUTSCOTT.CATEGORY.CATEGORYNAME%TYPE, dscpOUTSCOTT.PRODUCT.DESCRIPTION%T

33、YPE ) AS BEGIN SELECT PRODNAME, CATEGORYNAME, DESCRIPTION INTOpname, ctname, dscp FROMSCOTT.PRODUCT P JOINSCOTT.CATEGORY C ONP.CATEGORYID = C.CATEGORYID WHEREP.PRODID = pid; END PRC_GETPRODUCTINFO; 制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)Linux公社(LinuxIDC.com)vLinuxLinux公社(公社(LinuxIDC.comLinuxIDC.com)于)于20062006年年9 9月月252

34、5日注日注冊(cè)并開通網(wǎng)站,冊(cè)并開通網(wǎng)站,LinuxLinux現(xiàn)在已經(jīng)成為一種廣受關(guān)現(xiàn)在已經(jīng)成為一種廣受關(guān)注和支持的一種操作系統(tǒng),注和支持的一種操作系統(tǒng),IDCIDC是互聯(lián)網(wǎng)數(shù)據(jù)中是互聯(lián)網(wǎng)數(shù)據(jù)中心,心,LinuxIDCLinuxIDC就是關(guān)于就是關(guān)于LinuxLinux的數(shù)據(jù)中心。的數(shù)據(jù)中心。vLinuxLinux公社公社是專業(yè)的是專業(yè)的LinuxLinux系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)系統(tǒng)門戶網(wǎng)站,實(shí)時(shí)發(fā)布最新布最新LinuxLinux資訊,包括資訊,包括LinuxLinux、UbuntuUbuntu、FedoraFedora、RedHatRedHat、紅旗、紅旗LinuxLinux、LinuxLinux

35、教程、教程、LinuxLinux認(rèn)證認(rèn)證、SUSE LinuxSUSE Linux、AndroidAndroid、OracleOracle、HadoopHadoop等技等技術(shù)。術(shù)。制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)35 課堂演示創(chuàng)建包-2. -2. 定義包體定義包體-函數(shù)的執(zhí)行部分函數(shù)的執(zhí)行部分 FUNCTION FUN_GETSTOCK ( pid SCOTT.PRODUCT.PRODID%TYPE ) RETURN NUMBER IS stock NUMBER; BEGIN SELECTSUM(QUANTITY) INTO stock FROMSUPPLY WHEREPRODID = p

36、id; RETURN stock; END FUN_GETSTOCK;END PKG_DISPLAYPRODUCT; 制作:馮向科(湖南鐵道職業(yè)技術(shù)學(xué)院)36 課堂演示創(chuàng)建包-3. -3. 調(diào)用包中對(duì)象調(diào)用包中對(duì)象DECLARE pidSCOTT.PRODUCT.PRODID%TYPE; pnameSCOTT.PRODUCT.PRODNAME%TYPE; ctnameSCOTT.CATEGORY.CATEGORYNAME%TYPE; dscpSCOTT.PRODUCT.DESCRIPTION%TYPE; stockNUMBER;BEGIN pid := P070920001; SCOTT.PKG_DISPLAYPRODUCT.PRC_GETPRODUCTINFO(pid,pname,ctname,dscp); stock := SCOTT.PKG_DISPLAYPRODUCT.FUN_GETSTOCK(pid); DBMS_OUTPUT.PUT_LINE(產(chǎn)品信息一覽); DBMS_OUTPUT.PUT_LINE(-); DBMS_OUTPUT.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論