Oracle自定义函数

函数用于返回特定数据。执行时得找一个变量接收函数的返回值;

语法如下:

无参:


  1. create or replace function 函数名 return 返回类型   is  Result 数据类型;    
  2. --变量声明    
  3. begin    
  4. --其它语句;    
  5. return(Result);    
  6. end  函数名; 

注意Result ——结果集缓存(Result Cache)可要可不要,它是11g的一个新特性,含义就是将查询的结果集Cache起来,以便随后相同的查询请求可以直接利用,从而避免了再次查询。

例:


  1. create or replace function get_user return varchar2 is 
  2. Result varchar2(50);  
  3. begin 
  4. select username into re from user_users;  
  5. return(Result );  
  6. end get_user; 

有参:


  1. create or replace function 函数名  (   argu1 [mode1] datatype1,   argu2 [mode2] datatype2, ........   )   return 返回数据类型  is   
  2.  
  3.    begin   
  4.     
  5. end 函数名;     
  6. --model 指参数的模式  如in(输入)  out(输出) 

例:带in参数


  1. create or replace function myfun(deptno in number) return number is   
  2. Result number;  
  3. num number := 0;  
  4. begin 
  5.   Result :=0;  
  6.   select count(*) into num from emp t where   t.deptno=deptno;  
  7.   Result := num;  
  8. return (Result);  
  9. end myfun; 

例:带out参数

 


  1. create or replace function get_info(e_name varchar2,job out varchar2) return number is   
  2. Result number;   
  3. begin   
  4. select sal,job into Result,job from emp where ename=e_name;   
  5. return(Result);   
  6. end get_info;  

例:带in out 参数
 


  1. create or replace function result(num1 number,num2 in out number) return number is   
  2. v_result number(6);   
  3. v_remainder number;   
  4. begin   
  5. v_result :=num1/num2;   
  6. v_remainder :=mod(num1,num2);   
  7. num2 :=v_remainder;   
  8. return(v_result);   
  9. Exception   
  10.     when zero_divide then   
  11.        raise_application_error(-20000,'不能除0');   
  12. end result;  

 


  1. 1 、一个最简单的自定义函数Fun_test1的定义。  
  2. create or replace function Fun_test1(p_1 number)--Fun_test1是函数名,有一个输入参数p_1,是number型的。返回值也是number型的  
  3. return number  
  4. IS  
  5. begin  
  6. if p_1>0 then  
  7. return 1;  
  8. elsif p_1=0 then  
  9. return 0;  
  10. else  
  11. return -1;  
  12. end if;  
  13. end;  
  14. --这个函数只是可以知道自定义函数的定义和格式。其实没什么用途。  

--自定义函数的调用方法和Oracle的其它内部函数是一样的。

 


  1. 附:  
  2. 函数调用限制  
  3. 1、SQL语句中只能调用存储函数(服务器端),而不能调用客户端的函数  
  4. 2、SQL只能调用带有输入参数,不能带有输出,输入输出函数  
  5. 3、SQL不能使用PL/SQL的特有数据类型(boolean,table,record等)  
  6. 4、SQL语句中调用的函数不能包含INSERT,UPDATE和DELETE语句  

 本文转自  wbb827  51CTO博客,原文链接:http://blog.51cto.com/wbb827/1175634


上一篇:ORACLE 常用函数——字符函数


下一篇:iPhone开发入门教程