第18次课_包_触发器

第18次课_包_触发器

ID:43738089

大小:557.00 KB

页数:47页

时间:2019-10-13

第18次课_包_触发器_第1页
第18次课_包_触发器_第2页
第18次课_包_触发器_第3页
第18次课_包_触发器_第4页
第18次课_包_触发器_第5页
资源描述:

《第18次课_包_触发器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、包包是由存储在一起的相关对象组成的PL/SQL存储程序包有两个独立的部分,包头和包体,需要分别定义包头包含了包中过程、函数的声明包体是真正的过程、函数的执行部分定义包头包头主要包含了包中出现的过程、函数的声明,但是不包括实际的代码部分CREATE[ORREPLACE]PACKAGEpackage_name{IS

2、AS}type_definition

3、procedure_specification

4、function_specification

5、variable_declaration

6、exception_declaration

7、cursor_declaration

8、pragma_de

9、clarationEND[package_name];包体包体是一个独立于包头的数据字典对象包体只能在包头完成编译后才能进行编译包体内部还可以包括具有包体全局属性的附加声明部分,但这些附加说明对于包体外部是不可见的CREATE[ORREPLACE]PACKAGEBODYpackage_nameAS全局变量定义;函数定义;过程定义;ENDpackage_name;包的组成ProcedureA declarationProcedureAdefinitionProcedureB definition公有变量私有变量公有过程私有过程公有过程包头声明包体本地变量包:基本规则在包头声明过的是外

10、部可以调用的过程、函数、变量在包体内也可以定义过程、函数、变量,但这些定义只能在包体内可见在包中声明的时候,必须是前向声明的,也就是对象需要引用的另一个对象必须在前面首先声明包头是必须存在的,包体是可选的包头必须在包体前创建,否则创建不了包体只在包头中包括公用变量、过程、函数的声明创建程序包CREATEORREPLACEPACKAGEpack_meISPROCEDUREorder_proc(ornoVARCHAR2);FUNCTIONorder_fun(ornosVARCHAR2)RETURNVARCHAR2;ENDpack_me;/CREATEORREPLACEPACKAGEBO

11、DYpack_meASPROCEDUREorder_proc(ornoVARCHAR2)ISstatCHAR(1);BEGINSELECTostatusINTOstatFROMorder_masterWHEREorderno=orno;……ENDorder_proc;FUNCTIONorder_fun(ornosVARCHAR2)RETURNVARCHAR2ISicodeVARCHAR2(5);ocodeVARCHAR2(5);BEGIN……ENDorder_fun;ENDpack_me;/创建包头创建一个包头,包含了一个公用的过程和一个变量:CREATEORREPLACEPACK

12、AGEcomm_packageISg_commNUMBER:=0.10;PROCEDUREreset_comm(p_commINNUMBER);ENDcomm_package;创建包体CREATEORREPLACEPACKAGEBODYcomm_packageISFUNCTIONvalidate_comm(p_commINNUMBER)RETURNBOOLEANISv_max_commNUMBER;BEGINSELECTMAX(commission_pct)INTOv_max_commFROMemployees;IFp_comm>v_max_commTHENRETURN(FALSE

13、);ELSERETURN(TRUE);ENDIF;ENDvalidate_comm;...创建包体PROCEDUREreset_comm(p_commINNUMBER)ISBEGINIFvalidate_comm(p_comm)THENg_comm:=p_comm;ELSERAISE_APPLICATION_ERROR(-20210,'不合理的表达式');ENDIF;ENDreset_comm;ENDcomm_package;在同一个包中调用包中的过程或者函数可以直接调用:CREATEORREPLACEPACKAGEBODYcomm_packageIS...PROCEDUREres

14、et_comm(p_commINNUMBER)ISBEGINIFvalidate_comm(p_comm)THENg_comm:=p_comm;ELSERAISE_APPLICATION_ERROR(-20210,'不合理的表达式');ENDIF;ENDreset_comm;ENDcomm_package;在存储过程中调用包的过程或者函数使用包名作为引用的前缀:CREATEORREPLACEPROCEDUREreset_testISBEGIN…comm_package

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。