资源描述:
《Oracle 11g数据库管理与开发基础教程 教学课件 作者 袁鹏飞 第17章.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Oracle11g数据库管理与开发基础教程授课教师:职务:第17章包课程描述包可以将存储过程、函数、变量、游标和对象类型组织在一起,实现PL/SQL程序的模块化,并构建供其他编程人员重用的代码库。本章知识点包的基本概念和结构包的创建和调用包管理17.1包的创建包可以将存储过程、函数、变量、游标和对象类型组织在一起,实现PL/SQL程序的模块化,并构建供其他编程人员重用的代码库。包通常由两部分组成:规范和包体。包的规范是程序的公共接口,列出了包中可以使用的存储过程、函数、类型、游标、对象等;包体包含了规范的
2、实现,以及没有在规范中列出的私有数据、对象等。17.1.1规范使用CREATEPACKAGE语句来创建包的规范,语法如下:CREATE[ORREPLACE]PACKAGEpackage_name{IS
3、AS}package_specification;ENDpackage_name;其中:package_name为包名;package_specification列出公共存储过程、函数、类型、对象等的声明。例如,创建包books_package规范,其中包含一个存储过程add_books_p和一个函数fin
4、d_books_f。BOOKS_PUB@orcl_dbs>CREATEORREPLACEPACKAGEbooks_package2AS3PROCEDUREadd_books_p(p_bnumVARCHAR2,p_bnameVARCHAR2,4p_bcatCHAR,p_bauthorVARCHAR2,p_bpubVARCHAR2,p_bpriceNUMBER);5FUNCTIONfind_books_f(p_bnumVARCHAR2)RETURNVARCHAR2;6ENDbooks_package;7/程序
5、包已创建。17.1.2包体使用CREATEPACKAGEBODY语句来创建包体,其语法如下:CREATE[ORREPLACE]PACKAGEBODYpackage_name{IS
6、AS}package_body;ENDpackage_name;其中:package_name为包名;package_body定义存储过程和函数的实现代码,并可以在此声明包的私有数据,以及完成初始化等工作。例如,创建包books_package的包体。BOOKS_PUB@orcl_dbs>CREATEORREPLACEPACKA
7、GEBODYbooks_package2AS3PROCEDUREadd_books_p(p_bnumVARCHAR2,p_bnameVARCHAR2,4p_bcatCHAR,p_bauthorVARCHAR2,p_bpubVARCHAR2,p_bpriceNUMBER)5AS6BEGIN7INSERTINTObooks(bookid,booknum,bookname,category,author,8publish,bookprice)9VALUES(books_seq.nextval,p_bnum,p_
8、bname,p_bcat,p_bauthor,10p_bpub,p_bprice);11ENDadd_books_p;12FUNCTIONfind_books_f(p_bnumVARCHAR2)RETURNVARCHAR213AS14v_bookbooks%ROWTYPE;15v_infoVARCHAR2(100);16BEGIN17SELECT*INTOv_book18FROMbooks19WHEREbooknum=p_bnum;20v_info:=v_book.bookname
9、
10、''
11、
12、v_book
13、.author
14、
15、''
16、
17、21v_book.publish
18、
19、''
20、
21、v_book.bookprice;22RETURNv_info;23ENDfind_books_f;24ENDbooks_package;25/程序包体已创建。17.1.3初始化包的初始化只在包第一次被调用时执行一次,初始化过程是通过一个匿名的PL/SQL块来完成的。例如,修改17.1.2小节中包books_package的规范定义,然后在包体内实现对包的初始化。BOOKS_PUB@orcl_dbs>CREATEORREPLACEPAC
22、KAGEbooks_package2AS3v_avgpNUMBER;4PROCEDUREadd_books_p(p_bnumVARCHAR2,p_bnameVARCHAR2,5p_bcatCHAR,p_bauthorVARCHAR2,p_bpubVARCHAR2,p_bpriceNUMBER);6FUNCTIONfind_books_f(p_bnumVARCHAR2)RETURNVARCHAR2;7ENDbooks_packa