【PLSQL】package包的使用
来源:互联网 发布:反编译软件 编辑:程序博客网 时间:2024/06/07 02:19
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏************************************************************************
包package
package是一个可以将相关对象存储在一起的PLSQL结构,Package包含两个分量的组成部分:specification包声明,body(声明中的程序实现,包体)。每个部分都单独的存储在数据字典中。包声明时一个操作的接口,对应用来说是可见的。包体是黑盒,对应用来说隐藏了实现的细节
包的组成包括:
过程,函数,变量,游标(定义一条sql语句),类型(定义符合类型),常量,异常
包的优点:
---方便对应过程和函数的组织,解决命名冲突
---方便对过程和函数的组织:不改变包的声明定义,改变包的包体;
---限制过程和函数的依赖性
---在包体为实现时候,其他程序可以钓鱼保重的对象,对自己程序进行编译;
---方便对过程和函数的安全性管理:包的访问授权只需一次性授权,区分公共过程和私有过程;
---改善性能:在包首次被调用的时候,一个整体全部放入内存,减少多次调用的磁盘IO;
3.8.1 匿名块
--过程和函数只能在本匿名块中调用,例如;
declare
v_n1 number :=1;
function fun1 (p_in number ) return number ls
begin
return p_in
end;
procedure proc1 ls
begin
dbms_output.put_lin(fun1(v_n1));
end;
begin
proc1;
end;
3.8.2 package的语法
包头声明:
create or replace package pkg_name {ls | as }
公共变量(varibale)的定义;
公共类型(type)的定义;
公共游标(cursor)的定义;
函数说明;
过程说明;
end;
--package body声明的语法;
create or replace package body pkg_name
ls | as
--调用一次执行一次
函数实现
--调用一次执行一次
过程实现
begin
--初始化代码
--首次调用包中任意对象执行一次
end;
3.8.3 包Package的使用
包的声明
create or replace packeage pkg1
ls
--公共类型
type t_rec is record
(m1 number,m2 varchar2(10));
--公共变量
v_rec t_rec ;
--公共过程
procedure proc1;
--公共函数
function fun1(p_in number) return number;
end
包体的实现
create or replace packeage pkg1
ls
--实现过程
procedure proc1
ls
begin
dbms_outpurt.put_lin(v_rec.m1);
end;
--实现函数
function fun1(p_in number) return number
ls
begin
return p_in
end;
--初始化代码
begin
v_rec.m1 :=100;
end;
调用package
begin
pkg1.v_rec.m1 :=pkg1.fun1(10);
pkg1.proc1;
end;
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏************************************************************************- 【PLSQL】package包的使用
- oracle plsql 包 package
- Delphi中包(Package)的使用
- Oracle Package包的定义及使用
- 对使用包(Package)的忠告
- Oracle Package中的包变量的使用
- Python第三方包(package)的使用
- package包的概念、使用和练习题
- Oracle Package包使用
- PLSQL Package
- 如何在PLSQL中调试PACKAGE包中的FUNCTION函数
- 使用rosetta包调用plsql
- plsql动态包使用例子
- PLSQL光标和包使用
- 包(package)使用详解
- ORACLE package包中的存储过程的定义和使用
- JAVA中包(package)的使用相关
- java中package(包)的使用理解
- C语言编程需要注意的64位和32机器的区别
- 开源项目学习:Android-Universal-Image-Loader-Part3
- 详解Android App AllowBackup配置带来的风险
- 简明 Vim 练级攻略
- 133 - The Dole Queue
- 【PLSQL】package包的使用
- hdu1568
- sqlite语句
- 二哥学算法之排序
- HDU 2670 Girl Love Value
- Haproxy配置文件详解
- 求10个数中最大值
- oc_study17--property的简便方式
- 黑马程序员_JAVA中IO流-字节流与字符流比较与转换