pl/sql编程----包

包:
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
包规范是包的接口。它只是声明可以从包外部引用的类型,变量,常量,异常,游标和子程序。也就是说,它包含有关包的内容的所有信息,但不包括子程序的代码。
所有放置在规范中的对象被称为公共对象。任何不在包规范中但在包体中编码的子程序称为私有对象

使用create package 命令来创建包规范
实例:

create or replace package sp_package is 
--创建一个名为sp_package的包
 procedure sp_pro(sqdm varchar2,newmim number);
 function  sp_fun(spdm varchar2) return number;
--声明该包中有一个过程update_sal和一个函数 annual_income
end;

包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码。包体用于实现包规范中的过程和函数
包体具有包规范中声明的各种方法代码和其他私有声明,这些声明对包之外的代码是隐藏的
使用create package body 命令创建包体

create or replace package body sp_package is
    --sp_pro
     procedure sp_pro(sqdm varchar2,newmim number) is
        --如果要定义变量,常量等,可以在此定义;is与begin之间定义;
        begin
        --执行部分 根据用户名修改密码
	        update caozyxx set mim = newmim where caozydm =  sqdm;
        end;
        --sp_fun
        function  sp_fun(spdm varchar2) return number  is 
	        nianx number(7,2);
        begin
        --执行部分
	        select mim*12 into nianx from caozyxx where caozydm = spdm;
	        return nianx;
        exception
        --例外部分
    		 when no_data_found then
    			 dbms_output.put_line('输入错误');
    			return(0);
        end; 
end;

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

调用包中的过程:

exec sp_package.sp_pro('0000',4500);
--call sp_package.sp_pro('0000',4500);

调用包中的函数:

--命令行
var bb number;
call sp_package.sp_fun('0000') into:bb;
 --在pl/sql块中调用:
    declare
    --定义变量用于接收返回值
            b number;
     begin 
            --执行,将返回的值给变量,并打印出来
              b:=sp_package.sp_fun('0000');
              dbms_output.put_line('年薪为'||b);
     end;

猜你喜欢

转载自blog.csdn.net/enbaoIT/article/details/89044302