oracle 程序包小总结

程序包有两个独立的部分:说明部分和包体部分
说明部分是包与应用程序之间的接口,只是过程。函数。游标等的名称或部首
包体部分是过程,函数,游标等的具体实现

创建包:
包头是对包的所有部件进行一个声明,其中的过程函数变量常量游标都是公共的,可在应用程序执行过程中调用。

1.包说明部分:
CREATE PACKAGE<包说明>
IS
变量,常量及数据类型定义;
游标定义头部;
函数,过程的定义和参数列表以及返回类型;
END <包名>;

ex;
CREATE PACKAGE my_package
IS
man_num NUMBER; -------定义了两个全局变量
woman_num NUMBER;
CURSOR teacher_cur; ---------定义了一个游标
CREATE FUNCTION F_count_num(in_sex in TEACHERS.SEX%TYPE)
RETURN NUMBER ---------定义了一个函数
CREATE PACKAGE P_count_num
(in_sex in TEACHERS.SEX%TYPE,out_num out NUMBER); ----定义了一个过程
END my_package;

2.包体部分

CREATE PACKAGE BODY<包名>
AS
游标。函数。过程的具体定义;
END <包名>;

ex;
CREATE PACKAGE BODY my_package
AS
CURSOR teacher_cus IS
SELECT TID,TNAME,TITLE,SEX
FROM TEACHERS
WHERE TID<117;
FUNCTION F——count_num
(in_Sex in TEACHERS.SEX%TYPE)
RETURN NUMBER
AS
out_num NUMBER;
BEGIN
IF in_sex=‘m’ THEN
SELECT count(SEX)INTO out_num
FROM TEACHERS
WHERE SEX=‘m’;
ELSE
SELECT count(SEX) INTO out_num
FROM TEACHERS
WHERE SEX=‘f’;
END IF;
RETURN(out_num);
END F_count_num;
PROCEDURE P_count_num
(in_sex in TEACHERS.SEX%TYPE,out_num out NUMBER)
AS
BEGIN
IF in_sex=‘m’ THEN
SELECT count(SEX) INTO out_num
FROM TEACHERS
WHERE SEX=‘m’;
ELSE
SELECT count(SEX) INTO out_num
FROM TEACHERS
WHERE SEX=‘f’;
END IF ;
END P_count_num;
END my_package;
如果包体的过程或函数定义中有变量声明,则包外不能使用这些私有变量

3.调用包
包名.变量名(常量名)
包名.游标名
包名.函数名(过程名)

4.删除包
DROP PACKAGE <包名>

5.修改
CREATE OR REPLACE PACKAGE <包名>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值