oracle 函数和包

 函数用于返回特定的数据,当建立函数时,在函数头部必须包含 return 子句。
而在函数体内必须包含 return 语句返回的数据。我们可以使用 create function
来建立函数,实际案例:  
Sql 代码    

    1.  --输入雇员的姓名,返回该雇员的年薪    
   2.  create function annual_incomec(name varchar2)    
   3.  return number is   
   4.  annual_salazy number(7,2);    
   5.  begin   
   6.      --执行部分    
   7.      select sal*12+nvl(comm, 0) into annual_salazy from emp wher
       e ename=name;    
   8.      return annual_salazy;    
   9.  end;    
    10./   

如果函数创建过程有编译错误,可以使用show error;命令显示错误  
在 sqlplus 中调用函数  
Sql 代码    

    1.  SQL> var income number    
   2.  SQL> call annual_incomec('scott') into: income;    
   3.  SQL> print income   

 


 包ν  
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。  
1.我们可以使用 create package 命令来创建包。  
实例:  
--创建一个包 sp_package  
--声明该包有一个过程 update_sal  
--声明该包有一个函数annual_income  
Sql 代码    

    1.  create package sp_package is   
   2.    procedure update_sal(name varchar2, newsal number);    
    3.    function annual_income(name varchar2) return number;    
   4.  end;   

 
  包的规范只包含了过程和函数的说明,但是没  过程和函数的实现代码。包体
用于实现包规范中的过程和函数。  
2.建立包体可以使用 create package body 命令  
--给包 sp_package 实现包体  
Sql 代码    

    1.  create or replace package body sp_package is   
   2.    procedure update_sal(name varchar2, newsal number)     
    3.    is   
   4.    begin     
    5.      update emp set sal = newsal where ename = name;    
   6.    end;    
    7.    function annual_income(name varchar2) return number is   
   8.      annual_salary number;    
   9.    begin   
    10.    select sal * 12 + nvl(comm, 0) into annual_salary from emp 
          
    11.     where ename = name;    
    12.    return annual_salary;    
    13.  end;    
    14.end;    
    15./   

 
3.如何调用包的过程或是函数  

----------------------- Page 73-----------------------

当调用包的过程或是函数时,在过程和函数前需要带  包名,如果要访问其它方
案的包,还需要在包名前加方案名。  
如:  
SQL> call sp_package.update_sal('SCOTT', 1500);  
特别说明:  
包是pl/sql 中非常重要的部分,我们在使用过程分页时,将会再次体验它的威
力呵呵。  

 

转载于:https://www.cnblogs.com/gaiyang/archive/2011/08/24/2152620.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值