oracle怎么使用包,oracle 包 简单使用

理解PL/SQL包

简介

包(package)的主要作用是用于逻辑组合相关的PL/SQL类型

比如记录类型或者集合类型,PL/SQL游标或游标声明以及PL/SQL子程序

还可以包含任何可以在块的声明区中定义的变量

或者说是

将功能或业务相似的存储过程,函数

以及类型等进行一个封装

包的组成

一个PL/SQL包由如下两部分组成

包规范(包声明)

包规范: 主要是包的一些定义信息,不包含具体的代码实现部分

也可以说包规范是PL/SQL程序和其他应用程序的接口

包含类型,记录,变量,常量,异常定义,游标和子程序的声明

包体

包体是对包规范中声明的子程序的实现部分

包体的内容对于外部应用程序来说是不可见的

包体就像是一个黑匣子一样,是对包规范的实现

包的优点

1模块化设计

通过将逻辑相关的类型,常量,变量,异常和子程序放到一个命名的

pl/sql模块中,使得每一个包都容易理解,有助于模块化程序的开发

使得包与包之间的接口简单,清晰

2规范化的程序设计

在基于包的应用程序设计时,可以首先规划并在包规范中定义包需要提供的功能

即便当前并没有实现包体,也可以编译包规范部分

然后引用该包的存储子程序会被编译

3实现信息的隐藏

包规范中定义的常量,变量和异常及子程序等时公有的,可以被外部访问

可以规划将哪些内容公开给外部进行调用

如果不想对外公开,可以在包体中定义这些内容,这样就可以实现信息的隐藏

4提供全局共享的附加功能

在包中公开的变量或游标在一个会话期会一直存在

因此可以将包中定义的变量当做全局变量来使用

5提供了良好的性能体验

由于在首次打开包子程序时,整个包都会被加载到内存中

因而后续的调用只需要从内存中读取而不需要再次读取磁盘,

提供了较好的性能

包规范

语法

create or replace package 包名

is

--声明变量

--声明常量

--类型的定义

--游标的定义

--声明存储过程

procedure 存储过程名[(参数 in|out|in out 类型,..)];

--声明函数

function 函数名[(参数 类型,...)] return 返回值类型;

end[包名];

创建一个包规范

create or replace package pk1

is

--声明一个变量

s varchar2(50);

--声明一个常量

T constant varchar2(10):='TAB_';

--定义一个集合类型

type ity is table of varchar2(30);

--声明一个存储过程

procedure p1;

--声明函数

function fn(n number) return number;

end pk1;

包体

语法

create or replace package body 包名

is

--声明私有对象

--声明私有变量

--声明私有常量

--私有函数或存储过程

--公有对象的实现

end[包名];

注意:

包名,和包声明的名字一样

私有对象只能在包体内部调用,在最前面声明

创建一个包体

create or replace package body pk1

is

--声明变量

ss varchar(50);

--乘法表

procedure p1

is

begin

for i in 1..9 loop

for j in 1..i loop

dbms_output.put(i||'*'||j||'='||i*j);

end loop;

dbms_output.put_line('');

end loop;

end;

--阶乘

function fn(n number) return number

is

--声明一个变量保存阶乘

s number(10) :=1;

begin

for i in 1..n loop

s:=i*s;

end loop;

return s;

end;

end;

调用

调用1

begin

pk1.s:=3;

dbms_output.put_line(pk1.s);

end;

输出1

3

调用2

begin

pk1.ss:=3;

dbms_output.put_line(pk1.ss);

end;

输出2

ORA-06550: 第 2 行, 第 7 列:

PLS-00302: 必须声明 'SS' 组件

变量ss在包体中声明,外部程序不能访问

调用3

begin

pk1.p1();

end;

输出3

1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

调用&&输出4

SQL> select pk1.fn(4) from dual;

PK1.FN(4)

----------

24

标签:pk1,end,变量,SQL,简单,使用,oracle,声明,包体

来源: https://www.cnblogs.com/inmeditation/p/12107752.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值