函数用于返回特定的数据,当建立函数时,在函数头部必须包含 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 中非常重要的部分,我们在使用过程分页时,将会再次体验它的威
力呵呵。  

 

posted on 2011-08-24 22:45  cnby  阅读(2715)  评论(0编辑  收藏  举报