• oracle学习笔记(二十一) 程序包


    程序包

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

    程序包创建语法

    1. 声明程序包

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

    2. 实现程序包

    create or replace package body dbms_my
    is
    	procedure <过程名>
    	is
    	......
    end dbms_my;
    

    程序包例子

    --创建程序包
    create or replace package dbms_my
    is
    	--相当于自定义一个类
    	TYPE type_my_rec is record(
    		empno number,
    		ename varchar2(10),
    		sal number
    	);
    	procedure sum_sal(deptno department.deptno%type,sum in out number); 
    	function avg_sal(deptno department.deptno%type) return  number;
    end dbms_my;
    
    --实现程序包
    create or replace package body dbms_my
    is
    	procedure sum_sal(p_deptno department.deptno%type,sum in out number)
    	is 
    		sum number;
    	begin
    		select sum(sal) into sum from employee where deptno=p_deptno;
    	end sum_sal;
    	
    	function avg_sal(deptno department.deptno%type) return  number
    	is
    		result number;
    	begin
    		select avg(sal) into result from employee where deptno=p_deptno;
    		return result;
    	end avg_sal;
    end dbms_my;	
    
    --测试程序包
    declare
    	--使程序包中定义的记录类型来声明变量
    	emp_rec dbms_my.type_my_rec;
    	v_deptno number default 7879;
    	sum_sal number;
    	avg_sal number;
    	x varchar2(100) := 'default value';
    begin
    	emp_rec.empno := 7879;--给类中的某个属性赋值
    	sum_sal := dbms_my.sum_sal(deptno);--调用过程
    	dbms_output.put_line(sum_sal);--输出结果
    	select dbms_my.avg_sal(7879) into avg_sal from dual;--调用函数
    	dbms_output.put_line(avg_sal);--输出结果
    end;
    /
    
  • 相关阅读:
    matlab cell
    matlab linux 快捷键设置——有问题还是要解决
    latex 小结
    TOJ 1258 Very Simple Counting
    TOJ 2888 Pearls
    HDU 1248 寒冰王座
    TOJ 3486 Divisibility
    TOJ 3635 过山车
    TOJ 1840 Jack Straws
    HDU 4460 Friend Chains
  • 原文地址:https://www.cnblogs.com/stars-one/p/10970018.html
Copyright © 2020-2023  润新知