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


相关文章
|
1月前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
22 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
5月前
|
SQL Oracle 算法
|
7月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
118 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
5月前
|
SQL Oracle 关系型数据库
|
5月前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
5月前
|
Oracle 关系型数据库 数据挖掘
|
7月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
78 0
|
5月前
|
Oracle 关系型数据库 数据挖掘
|
6月前
|
存储 Oracle NoSQL
Oracle中decode函数详解
Oracle中decode函数详解
|
6月前
|
Oracle 关系型数据库 大数据
oracle递归函数
oracle递归函数