oracle 包怎么调用,【Oracle】包及包的调用

1.概述

包用于将相关的对象组合在一起,一个任务,需要多个函数或者过程协同才能完成,这时,可以这些函数和存储过程都放在一个包下,方便函数和存储过程的管理,提高程序的性能,在第一次用的时候,会全部读入内存,下次用直接从内存取,加强模块化。

包分为两部分:

1.包头(类似java接口)

包的规范,只包含了函数或存储过程的说明部分

创建包头语法:

create [or replace] package 包名 is|as

--函数定义

function 函数名 [(参数列表)] return 返回类型;

--存储过程定义

procedure 存储过程名 [(参数列表)];

end [包名];

2.包体(类似java实现类)

实现包头里定义的规范

创建包体语法:

create [or replace] package body 包名 is|as

--函数实现

function 函数名 [(参数列表)] return 返回类型 is|as

函数实现内容

--存储过程实现

procedure 存储过程名 [(参数列表)] is|as

存储过程实现内容

end [包名];

2.实战演练

-- 建立包

create or replace package emp_pkg is

TYPE t_ref_cursor is REF CURSOR;

FUNCTION get_emp_ref_cussor RETURN t_ref_cursor;

PROCEDURE update_emp_sal(

e_empno IN emp.empno%type,

e_sal number

);

end emp_pkg;

-- 建立包体

create or replace package body emp_pkg is

FUNCTION get_emp_ref_cussor RETURN t_ref_cursor IS

v_emp_ref_cursor t_ref_cursor;

BEGIN

OPEN v_emp_ref_cursor FOR

SELECT empno, ename, sal

FROM emp;

RETURN v_emp_ref_cursor;

END get_emp_ref_cussor;

PROCEDURE update_emp_sal(

e_empno IN emp.empno%type,

e_sal IN NUMBER

) AS

BEGIN

UPDATE emp SET SAL = SAL/e_sal WHERE empno = e_empno;

COMMIT;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.put_line(SQLERRM);

ROLLBACK;

END update_emp_sal;

END emp_pkg;

2.1 调度包中函数

select emp_pkg.get_emp_ref_cussor from dual;

输出结果截图:

ea330c2d7bae432391ba0d38f7f06dcf.png

2.2 调度包中的过程

CALL emp_pkg.update_emp_sal(7369, 10000)

原文:https://www.cnblogs.com/OliverQin/p/13223985.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值