博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【PLSQL】package包的使用
阅读量:4671 次
发布时间:2019-06-09

本文共 1797 字,大约阅读时间需要 5 分钟。

************************************************************************
  ****原文: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 徐长亮的专栏
************************************************************************

转载于:https://www.cnblogs.com/yxwkf/p/4544067.html

你可能感兴趣的文章
ACM 美素数 (没AC)
查看>>
Sqlserver学习研究
查看>>
VTK图形模型主要对象
查看>>
c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
查看>>
动静态广播的区别
查看>>
前缀式计算(前缀表达式)
查看>>
Linux常用命令大全
查看>>
添加删除tag
查看>>
ARM学习篇 中断定时理解
查看>>
卷积神经网络在tenserflow的实现
查看>>
[STL]用法
查看>>
PostgresException: 42883: function ifnull(integer, integer) does not exist
查看>>
python3 表情符号编码
查看>>
桥接模式
查看>>
跨server传输数据注意事项
查看>>
使用蒙版--渐变--制作瓶子倒影
查看>>
后代元素 span:first-child{...}
查看>>
LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42
查看>>
codevs 5958 无
查看>>
htaccess 实现网址缩短
查看>>