************************************************************************
  ****原文: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包的使用的更多相关文章

  1. PLSQL Package包的使用

    创建包头 create or replace package pak_kingsql is procedure pro_kingsql(p_one in varchar2,p_two out varc ...

  2. 关于Visual Studio 未能加载各种Package包的解决方案

    问题: 打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种提示 解决方案: 进入用户目录 C:\Users\用户名\AppData\Local\M ...

  3. 未能正确加载“visual C++ package”包

    早上打开360要卸载软件,跳出说系统修复,习惯性的点击修复,结果修复后发现打开vs2012提示“未能正确加载“visual C++ package”包……..”, 重启也一样,google了下,是因为 ...

  4. eclipse 包 取消代码第一行package包名 自动补全时取消自动引入包名 修改名字 取消引用 自动导入publilc static void main(String[] args) {}

    --项目 --包 包是为了管理类文件,同个包下不允许同名类文件,但不同包就可以,把类放在包里是规范 (https://zhidao.baidu.com/question/239471930532952 ...

  5. python开发者框架套件总结: package 包 frameworks

    python开发者的package 包 框架套件总结: frameworks     开发环境: anaconda pycharm django awesome-django : 介绍 django ...

  6. 如何同步删除svn管理的package包目录

    转:https://blog.csdn.net/shiwodecuo/article/details/51754598 eclipse在实际的开发中,当我们的项目由svn进行管理时,若想删除选中的整个 ...

  7. JavaSE入门学习17:Java面向对象之package(包)

           一Java包(package)        为了更好地组织类,Java提供了包机制,用于差别类名的命名空间.        包的作用:        A把功能类似或相关的类或接口组织在 ...

  8. 批量修改Java类文件中引入的package包路径

    http://libeey.blogbus.com/logs/101848958.html当复制其他工程中的包到新工程的目录中时,由于包路径不同,出现红叉,下面的类要一个一个修改包路径,类文件太多的话 ...

  9. error: Error: No resource found for attribute ‘layout_scrollFlags’ in package‘包名’

    遇到error: Error: No resource found for attribute 'layout_scrollFlags' in package'包名' 这个问题时候刚開始自己也是感觉到 ...

  10. go package包的使用

    一.标准库 引入 在我们之前所写的所以代码中,我们基本上可以看到fmt这个导入的包,但是我们却不知道如何去写这种包. 如果我们可以自己去写,那么我们就可以将一个功能的集合统一的放入包中,便于以后使用, ...

随机推荐

  1. Servlet过滤器——创建过滤器

    1.概述 介绍如何创建一个过滤器,并使用过滤器在打开页面的同时输出信息,此功能是由过滤器处理完成的. 2.技术要点 Serlvet过滤器实现了Filter接口,在Filter接口中定义了以下几个方法: ...

  2. 中国本土管理咨询公司排名TOP50

    中国本土管理咨询公司排名TOP50 1. 北京正略钧策管理顾问有限公司 2. 北京和君咨询公司 3. 北大纵横管理咨询公司 4. 远卓管理顾问公司 5. AMT管理咨询公司 6. 华夏基石管理咨询有限 ...

  3. 基于visual Studio2013解决面试题之0307最后谁剩下

     题目

  4. [置顶] ubuntu 和 win7 远程登陆 + vnc登陆

    ubuntu 和 win7 远程登陆: 第一种(通过win7自带的远程桌面来连接ubuntu) 1. windows7配置 我的电脑->属性->远程设置.-----允许远程连接 2. ub ...

  5. Java基础:泛型及其擦除性、不可协变性

    转载请注明出处:jiq•钦's technical Blog 1泛型语法: 泛型类: class ClassName<T>{} 泛型方法:public <T> void f(T ...

  6. POJ 2773 Happy 2006 数学题

    题目地址:http://poj.org/problem?id=2773 因为k可能大于m,利用gcd(m+k,m)=gcd(k,m)=gcd(m,k)的性质,最后可以转化为计算在[1,m]范围内的个数 ...

  7. android 请求网络 和 httpclient的使用上传下载

    访问网络最主要的也就是 http协议了. http协议很简单,但是很重要. 直接上代码了,里面都是1个代码块 代码块的,用哪一部分直接拷出去用就好了. 1.访问网络用 get 和 post  自己组拼 ...

  8. Delphi访问活动目录

    活动目录Active Directory是用于Windows Server的目录服务,它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用.Active Directory使用结构化 ...

  9. UVa 11371 - Number Theory for Newbies

    題目:給你一個數字n.將裡面每位的數又一次組合形成a,b.使得a-b最大且是9的倍數. 分析:數論. 題目要求a,b和n的位數同样,不能有前導0. 定理1:交換一個數字中的某兩個位的數,形成的新數組和 ...

  10. Swift - 告警提示框(UIAlertController)的用法

    自iOS8起,苹果就建议告警框使用UIAlertController来代替UIAlertView.下面总结了一些常见的用法: 1,简单的应用(同时按钮响应Handler使用闭包函数)    1 2 3 ...