PL/SQL 11g R2 —— 包

set serveroutput on
--包由包规范和包体两部分组成
--包规范里面定义的对象是全局的
--包体里面定义的对象是局部的
--定义包规范
create or replace package emp_package is  --使用了重载,两个过程名相同,参数不同 
  procedure get_sal(v_empno in number);   --全局过程 
  procedure get_sal(v_ename in varchar2); --全局过程
end emp_package;
/

--定义包体
create or replace package body emp_packageis function count_sal(v_empno in number) --局部函数 
  return number is v_sal emp.sal%type; 
  begin 
    select emp.sal into v_sal from emp where emp.empno=v_empno; 
    return v_sal; 
  end; 
  procedure get_sal(v_empno in number) --全局过程 
    is v_sal emp.sal%type; 
  begin 
    v_sal:=count_sal(v_empno); --调用局部函数 
    dbms_output.put_line('工资='||v_sal); 
  end; 
  procedure get_sal(v_ename in varchar2) --全局过程 
  is v_sal emp.sal%type; 
  begin 
    select emp.sal into v_sal from emp where emp.ename=v_ename; 
    dbms_output.put_line('工资='||v_sal); 
  end;
end emp_package;
/
--调用包
exec emp_package.get_sal(7788);
exec emp_package.get_sal('KING');
--当使用包全局函数的时候,可以在sql中调用
--那么全局函数有以下限制
--包的纯度级别:
--wnds 禁止执行dml操作
--wnps 不能给包变量赋值
--rnds 禁止执行dql操作
--rnps 不能将包变量值赋给其他变量
create or replace package emp_package 
is 
  function get_sal return number; 
  pragma restrict_references(get_sal,wnds);
end;
/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值