开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

oracle package包头和package body包体例子

简介:
+关注继续查看

程序包 
1作用是为了实程序模块化 
2程序包里面可以包含存储过程,函数,变量,游标等PL/SQL程序 
3程序包类似java的jar包,存储过程,函数,变量,游标等相当jar包提供的方法 
4调用程序包里面的存储过程,函数等元素时,oracle会把程序包调入内存,下次是使用,直接从内存读取。 
那么这些项目属于私有项目,只能在包体中使用.
一 包的组成
包头(package):包头部分申明包内数据类型,常量,变量,游标,子程序和异常错误处理,这些元素为包的公有元素。
包主体(package body):包主体则是包定义部分的具体实现,它负责为包头中所声明子程序提供具体的实现,在包主体中还可以声明包的私有元素。
包头和包主体分开编译,并作为两个分开的对象分别存放在数据库字典中。
二 包的语法规则
包头的语法如下:
create or replace package 包名
As | IS
procedure 过程名();
Function 函数名() return 数据类型;
变量定义;
异常定义;
光标定义;
...........
...........
End 包名;
包体创建的语法:
create or replace Package Body 包名
As | IS
Procedure 过程定义;
Procedure 过程定义;
Function 函数定义;
Function 函数定义;
.........;

end 包名;
包的开发步骤

与开发存储过程类似,包的开发需要几个步骤:

1. 将每个存储过程调式正确;
2. 用文本编辑软件将各个存储过程和函数集成在一起;
3. 按照包的定义要求将集成的文本的前面加上包定义;
4. 按照包的定义要求将集成的文本的前面加上包主体;
5. 使用SQLPLUS或开发工具进行调式。
加密实用程序

ORACLE 提供了一个实用工具来加密或者包装用户的PL/SQL,它会将用户的PL/SQL改变为只有ORACLE能够解释的代码版本.
WRAP 实用工具位于$ORACLE_HOME/BIN.

格式为:
WRAP INAME=<input_file_name> [ONAME=<output_file_name>]

wrap iname=e:\sample.txt

注意:在加密前,请将PL/SQL程序先保存一份,以备后用。
可以使用 DROP PACKAGE 命令对不需要的包进行删除,语法如下:
DROP PACKAGE [BODY] [user.]package_name;
包与过程、函数一样,也是存储在数据库中的,可以随时查看其源码。若有需要,在创建包时可以随时查看更详细的编译错误。不需要的包也可以删除。
同样,为了避免调用的失败,在更新表的结构后,一定要记得重新编译依赖于它的程序包。在更新了包说明或包体后,也应该重新编译包说明与包体。语法如下:

ALTER PACKAGE package_name COMPILE [PACKAGE|BODY|SPECIFICATION];

也可以通过以下数据字典视图查看包的相关。
DBA_SOURCE, USER_SOURCE, USER_ERRORS,DBA-OBJECTS

如,我们可以用:select text from user_source wherename='DEMO_PKG1';来查看我们创建的包的源码。



     本文转自whshurk 51CTO博客,原文链接:http://blog.51cto.com/shurk/2051626,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
No package ‘dconf‘ found
No package ‘dconf‘ found
0 0
No package ‘polkit-gobject-1‘ found
No package ‘polkit-gobject-1‘ found
0 0
find_package
find_package
0 0
舍近求远,为什么 Golang 要这样读取本地的 package?
舍近求远,为什么 Golang 要这样读取本地的 package?
0 0
How to get table list belonging to a given package and all its sub packages
Created by Jerry Wang, last modified on Sep 02, 2016 Go to start of metadata
0 0
springdata-jpa demo
demo 下载: http://download.csdn.net/download/knight_black_bob/9421829       jar    web.xml /back/jsp/main.
707 0
package-info.java文件详解
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/45727249 package-info.java文件详解 作者:chszs,转载需注明。
698 0
JAVA - package与import解析(一)
一、为什么要引入package和import?这个问题和c++中引入命名空间是一样的,也是为了解决重名问题。java通过包机制来解决重名问题,也就相当于给重名的代码加一系列前缀,从而达到唯一标识的作用。
567 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ORACLE 10g 数据库体系结构图
立即下载
Oracle 至PostgreSQL案例分享
立即下载
Oracle 数据库笔记
立即下载