【PLSQL】package包的使用
************************************************************************ ****原文: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包的使用的更多相关文章
- PLSQL Package包的使用
创建包头 create or replace package pak_kingsql is procedure pro_kingsql(p_one in varchar2,p_two out varc ...
- 关于Visual Studio 未能加载各种Package包的解决方案
问题: 打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种提示 解决方案: 进入用户目录 C:\Users\用户名\AppData\Local\M ...
- 未能正确加载“visual C++ package”包
早上打开360要卸载软件,跳出说系统修复,习惯性的点击修复,结果修复后发现打开vs2012提示“未能正确加载“visual C++ package”包……..”, 重启也一样,google了下,是因为 ...
- eclipse 包 取消代码第一行package包名 自动补全时取消自动引入包名 修改名字 取消引用 自动导入publilc static void main(String[] args) {}
--项目 --包 包是为了管理类文件,同个包下不允许同名类文件,但不同包就可以,把类放在包里是规范 (https://zhidao.baidu.com/question/239471930532952 ...
- python开发者框架套件总结: package 包 frameworks
python开发者的package 包 框架套件总结: frameworks 开发环境: anaconda pycharm django awesome-django : 介绍 django ...
- 如何同步删除svn管理的package包目录
转:https://blog.csdn.net/shiwodecuo/article/details/51754598 eclipse在实际的开发中,当我们的项目由svn进行管理时,若想删除选中的整个 ...
- JavaSE入门学习17:Java面向对象之package(包)
一Java包(package) 为了更好地组织类,Java提供了包机制,用于差别类名的命名空间. 包的作用: A把功能类似或相关的类或接口组织在 ...
- 批量修改Java类文件中引入的package包路径
http://libeey.blogbus.com/logs/101848958.html当复制其他工程中的包到新工程的目录中时,由于包路径不同,出现红叉,下面的类要一个一个修改包路径,类文件太多的话 ...
- error: Error: No resource found for attribute ‘layout_scrollFlags’ in package‘包名’
遇到error: Error: No resource found for attribute 'layout_scrollFlags' in package'包名' 这个问题时候刚開始自己也是感觉到 ...
- go package包的使用
一.标准库 引入 在我们之前所写的所以代码中,我们基本上可以看到fmt这个导入的包,但是我们却不知道如何去写这种包. 如果我们可以自己去写,那么我们就可以将一个功能的集合统一的放入包中,便于以后使用, ...
随机推荐
- Servlet的学习之Session(1)
在学习完了Servlet中的Cookie技术后,我们再来学习另一个能保存会话数据的技术——Session. Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其 ...
- Java总结之容器
[容器的概念] 容器:Java API所提供的一系列的实例,用于在程序中存放对象. [容器 API] J2SDK所提供的容器API位于java.util包内. {Collection[Set(Hash ...
- Delphi的字符(Char),字符串(String),字符串指针(PChar),字符数组arrayofchar(来自http://delphi.cjcsoft.net/论坛)
Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. WideChar这是2字节的Unicode字符. Char在目前相当于AnsiChar,但在De ...
- 编译Release版本小技巧
原文:编译Release版本小技巧 由于项目中要部署的App有很多,每次发布一个版本后都有一堆垃圾文件,部署在众多的终端机上不注意的话十分容易搞错.记得以前在VS中是可以设置下不生成vhost和pdb ...
- 一起talk C栗子吧(第十二回:C语言实例--单链表一)
各位看官们,大家好.从今天開始,我们讲大型章回体科技小说 :C栗子.也就是C语言实例.闲话休提, 言归正转. 让我们一起talk C栗子吧! 看官们,上一回中咱们没有说详细的样例,并且是说了样例中的文 ...
- Swift - 复杂数据类型说明(数组,字典,结构体,枚举)
1,数组 - Array 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 var types ...
- Mysql InnoDB 是IOT表 锁基于索引
</pre>Mysql InnoDB 是IOT表 锁基于索引<pre>
- All consistent reads within the same transaction read the snapshot established by the first read.
Session 1: Session 2: mysql> show variables like '%tx_isolation%'; +---------------+------------- ...
- FileReader读取文件里文乱码问题
有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=newString(str.getBytes(),"UTF-8");结果大部分中文显 ...
- HNCU1100:彩票
http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1100 题目描述 有一种彩票的玩法是从1~ ...