经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
oracle学习笔记(二十一) 程序包 - Stars-one
来源:cnblogs  作者:Stars-one  时间:2019/6/4 15:40:39  对本文有异议

程序包

之前我们调用的dbms_output.put_line(''),dbms_output就是一个程序包

程序包创建语法

1. 声明程序包

  1. --声明程序包中的过程,函数,自定义的类型
  2. --程序包里面的过程和函数不需要使用create or repalce
  3. create or replace package dbms_my
  4. is
  5. record类型等。
  6. procedure $procedure_name$ [(参数...)];
  7. function $function_name$ [(参数...)]
  8. ......
  9. end dbms_my;

2. 实现程序包

  1. create or replace package body dbms_my
  2. is
  3. procedure <过程名>
  4. is
  5. ......
  6. end dbms_my;

程序包例子

  1. --创建程序包
  2. create or replace package dbms_my
  3. is
  4. --相当于自定义一个类
  5. TYPE type_my_rec is record(
  6. empno number,
  7. ename varchar2(10),
  8. sal number
  9. );
  10. procedure sum_sal(deptno department.deptno%type,sum in out number);
  11. function avg_sal(deptno department.deptno%type) return number;
  12. end dbms_my;
  13. --实现程序包
  14. create or replace package body dbms_my
  15. is
  16. procedure sum_sal(p_deptno department.deptno%type,sum in out number)
  17. is
  18. sum number;
  19. begin
  20. select sum(sal) into sum from employee where deptno=p_deptno;
  21. end sum_sal;
  22. function avg_sal(deptno department.deptno%type) return number
  23. is
  24. result number;
  25. begin
  26. select avg(sal) into result from employee where deptno=p_deptno;
  27. return result;
  28. end avg_sal;
  29. end dbms_my;
  30. --测试程序包
  31. declare
  32. --使程序包中定义的记录类型来声明变量
  33. emp_rec dbms_my.type_my_rec;
  34. v_deptno number default 7879;
  35. sum_sal number;
  36. avg_sal number;
  37. x varchar2(100) := 'default value';
  38. begin
  39. emp_rec.empno := 7879;--给类中的某个属性赋值
  40. sum_sal := dbms_my.sum_sal(deptno);--调用过程
  41. dbms_output.put_line(sum_sal);--输出结果
  42. select dbms_my.avg_sal(7879) into avg_sal from dual;--调用函数
  43. dbms_output.put_line(avg_sal);--输出结果
  44. end;
  45. /

原文链接:http://www.cnblogs.com/kexing/p/10970018.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号