oracle 包的使用方法,oracle之包的详解

2351c032fed5f85805a757582afb84e2.png

程序包:

是对PL/SQL类型,过程,函数,游标,异常,变量,常量的封装。

包括两部分:规范和主体

规范:是程序包的公共接口,

主体:规范的实现,以及私有例程、数据和变量。

建立包的步骤:建立包的说明,在建立包的说明

建立包的说明语法:

CREATE OR REPLACE PACKAGE package_name

IS | AS

公用类型或变量常量的声明;

公用过程或函数的声明;

END package_name;

/

建立包的说明语法

CREATE OR REPLACE PACKAGE BODY package_name

IS | AS

私有类型或变量常量的声明;

公用过程或函数的实现;

END package_name

规范:

规范是程序包的接口,规范中定义的所有内容都可以由调用者使用(当然需要具有EXECUTE特权),比如规范中定义的过程函数可以被执行,类型可以被访问,变量可以被引用。

例子:使用两个过程PRINT_ENAME() 和PRINT_SAL(),定义称为EMPLOYEE_PKG的程序包。

CREATE OR REPLACE

PACKAGE employee_pkg as

Procedure print_ename(p_empno number);

Procedure print_sal(p_empno number);

End;

/

并没有为过程提供代码,只是定义了名称和参数。

这个时候如果试图使用这个包,会报错

exec employee_pkg.print_ename(1234);

主体:

程序包是过程,函数的具体实现部分,实现规范中定义的接口。

CREATE OR REPLACE

PACKAGE BODY employee_pkg as

Procedure print_ename(p_empno number) is

L_ename emp.ename%type;

Begin

Select ename into l_ename from emp where empno=p_empno;

Dbms_output.put_line(l_ename);

Exception

When no_data_found then

Dbms_output.put_line(‘Invalid employee number’);

End print_ename;

Procedure print_sal(p_empno number) is

L_sal emp.sal%type;

Begin

Select sal into l_sal from emp where empno=p_empno;

Dbms_output.put_line(l_sal);

Exception

When NO_DATA_FOUND then

Dbms_output.put_line(‘Invalid employee number’);

End print_sal;

End employee_pkg;

/

执行:

set serveroutput on

exec employee_pkg.print_ename(1234);

exec employee_pkg.print_ename(7782);

exec employee_pkg.print_sal(7782);

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值