包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
1)、我们可以使用create package命令来创建包,如:
i、创建一个包sp_package
ii、声明该包有一个过程update_sal
iii、声明该包有一个函数annual_income

--声明该包有一个存储过程和一个函数create package sp_package isprocedure update_sal(name varchar2, newsal number);function annual_income(name varchar2) return number;end;

2)、建立包体可以使用create package body命令
给包sp_package实现包体

CREATE OR REPLACE PACKAGE BODY SP_PACKAGE IS--存储过程PROCEDURE UPDATE_SAL(NAME VARCHAR2, NEWSAL NUMBER) ISBEGINUPDATE EMP SET SAL = NEWSAL WHERE ENAME = NAME;COMMIT;END;

--函数FUNCTION ANNUAL_INCOME(NAME VARCHAR2) RETURN NUMBER IS ANNUAL_SALARY NUMBER;BEGINSELECT SAL * 12 + NVL(COMM, 0) INTO ANNUAL_SALARY FROM EMP WHERE ENAME = NAME;RETURN ANNUAL_SALARY;END;END;/

3)、如何调用包的过程或是函数
当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。如:

--调用存储过程SQL> exec sp_package.update_sal('SCOTT', 8888);--调用函数var income NUMBER;CALL sp_package.ANNUAL_INCOME('SCOTT') INTO:income;print income;

特别说明:包是pl/sql 中非常重要的部分,我们在使用过程分页时,将会再次体验它的威力呵呵。

触发器
触发器是指隐含的执行的存储过程。当定义触发器时,必须要指定触发的事件和触发的操作,常用的触发事件insert,update,delete 语句,而触发操作实际就是一个pl/sql 块。可以使用create trigger 来建立触发器。
特别说明:我们会在后面详细为大家介绍触发器的使用,因为触发器是非常有用的,可维护数据库的安全和一致性。

转载于:https://www.cnblogs.com/Lightning-Kid/p/3863376.html

二十三、oracle pl/sql分类三 包相关推荐

  1. Oracle PL/SQL 第三章--运算符与表达式

    Oracle PL/SQL 第三章--运算符与表达式 目录 Oracle PL/SQL 第三章--运算符与表达式 1.运算符分类 1.1.算术运算符 1.2.关系运算符 1.3.比较运算符 1.4.逻 ...

  2. 二十一、oracle pl/sql分类一 存储过程

    存储过程用于执行特定的操作,当建立存储过程时,既可以指定输入参数(in),也可以指 定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数,可以将执行部分的数据传递 ...

  3. Oracle PL/SQL编程之包(packages)

    1.简介 包用于在逻辑上组合过程和函数,它由包规范和包体组成. 我们可以使用create package来创建包,代码如下: ok,包创建完成,通过包的代码发现包的功能就是申明包中包含的过程和方法,红 ...

  4. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)...

    [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) 原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之 ...

  5. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)...

    [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE P ...

  6. ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORAC ...

  7. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORAC ...

  8. 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码

    使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码 Oracle数据库系统自带的PL/SQL对象(包,存储过程,函数等)的代码绝大部分都是使用了wrap程序加 ...

  9. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

最新文章

  1. linux mysql添加用户名和密码错误,linux下为mysql设置用户名和密码
  2. 美多商城之支付(支付宝介绍)
  3. php获取全部post_php post获取所有提交
  4. 【Linux 内核 内存管理】RCU 机制 ④ ( RCU 模式下更新链表项 list_replace_rcu 函数 | 链表操作时使用 smp_wmb() 函数保证代码执行顺序 )
  5. MET 3P5: 工业工程
  6. sql server 生成万年历
  7. python网络验证系统_python3+django2 开发易语言网络验证(下)
  8. A star 算法 (Python)
  9. 假期第7天……想和测试人聊聊这个问题
  10. nsupdate处理ns注意事项
  11. java list 泛型 转换_Java中List与数组互相转换
  12. CAD中级的考证费用是多少?
  13. 统计字符串中数字字符、英文字符、空格符的个数
  14. Lab 3:自行车码表
  15. win8、server 2012 清除winsxs文件夹
  16. Excel演示神经网络原理(黑白数字0、1识别)
  17. Python爬取天气数据及可视化分析!这是秋天该有的气温?
  18. uniapp遮罩_APP新手引导遮罩层设计与UI视觉界面设计欣赏
  19. 用Visio画深度学习模型矢量图
  20. android ogg转mp3,MP3提取转换器

热门文章

  1. java8学习:新的日期使用
  2. 大三Java实习总结网易百度小米美团阿里(均拿offer)
  3. js-在url后面添加时间戳清除浏览器打开页面的缓存
  4. centOS下调整swap
  5. ASP.net:查找框设默认
  6. java基础----数据结构与算法----Java API:集合 以及 排序相关API
  7. ubuntu 安装php-redis
  8. Nginx + FastCgi + Spawn-fcgi + c 的架构
  9. Visual Studio 编译任务压缩js和css文件
  10. cocos studio和cocos creator关系