Oracle 函数

一、Oracle 创建函数 语法

Oracle 函数 是用于返回单个值的子程序。您必须在调用它之前声明和定义一个函数。它可以同时声明和定义,也可以在同一个块中先声明后定义。

Oracle 创建函数 语法:
 

CREATE [OR REPLACE] FUNCTION function_name  
   [ (parameter [,parameter]) ]  
RETURN return_datatype  
IS | AS  
 [declaration_section]  
BEGIN  
   executable_section  
[EXCEPTION  
   exception_section]  
END [function_name];  

在创建过程或函数之前,您必须定义一些参数。这些参数是

  • IN:这是一个默认参数。它将值传递给子程序。
  • OUT:必须指定。它向调用者返回一个值。
  • IN OUT:必须指定。它将初始值传递给子程序,并将更新的值返回给调用者。

二、Oracle 创建函数 示例1

让我们看一个创建函数的简单示例。

create or replace function adder(n1 in number, n2 in number)    
return number    
is     
n3 number(8);    
begin    
n3 :=n1+n2;    
return n3;    
end;    
/    

现在编写另一个程序来调用该函数。

DECLARE    
   n3 number(2);    
BEGIN    
   n3 := adder(11,22);    
   dbms_output.put_line('Addition is: ' || n3);    
END;    
/    

输出结果为:

Addition is: 33
Statement processed.
0.05 seconds

三、Oracle 创建函数 示例2

让我们举一个例子来演示声明、定义和调用一个简单的 PL/SQL 函数,该函数将计算并返回两个值的最大值。

DECLARE  
   a number;  
   b number;  
   c number;  
FUNCTION findMax(x IN number, y IN number)   
RETURN number  
IS  
    z number;  
BEGIN  
   IF x > y THEN  
      z:= x;  
   ELSE  
      Z:= y;  
   END IF;  
  
   RETURN z;  
END;   
BEGIN  
   a:= 23;  
   b:= 45;  
  
   c := findMax(a, b);  
   dbms_output.put_line(' Maximum of (23,45): ' || c);  
END;  
/  

输出结果为:

Maximum of (23,45): 45
Statement processed.
0.02 seconds

四、Oracle 调用函数 示例

让我们来一张客户表。此示例说明创建和调用独立函数。此函数将返回客户表中的客户总数。

customers客户表:

Id Name Department Salary
1 alex web developer 35000
2 ricky program developer 45000
3 mohan web designer 35000
4 dilshad database manager 44000

创建函数:
 

CREATE OR REPLACE FUNCTION totalCustomers  
RETURN number IS  
   total number(2) := 0;  
BEGIN  
   SELECT count(*) into total  
   FROM customers;  
    RETURN total;  
END;  
/  

 执行上述代码后,您将得到以下结果。

Function created.

调用函数:

DECLARE  
   c number(2);  
BEGIN  
   c := totalCustomers();  
   dbms_output.put_line('Total no. of Customers: ' || c);  
END;  
/  

执行结果为:

Total no. of Customers: 4
PL/SQL procedure successfully completed.

五、Oracle 递归函数

您已经知道一个程序或一个子程序可以调用另一个子程序。当子程序调用自身时,称为递归调用,过程称为递归。

计算一个数的阶乘的示例

让我们举个例子来计算一个数字的阶乘。此示例通过递归调用自身来计算给定数字的阶乘。

DECLARE  
   num number;  
   factorial number;  
  
FUNCTION fact(x number)  
RETURN number   
IS  
   f number;  
BEGIN  
   IF x=0 THEN  
      f := 1;  
   ELSE  
      f := x * fact(x-1);  
   END IF;  
RETURN f;  
END;  
  
BEGIN  
   num:= 6;  
   factorial := fact(num);  
   dbms_output.put_line(' Factorial '|| num || ' is ' || factorial);  
END;  
/  

执行结果如下:

Factorial 6 is 720 
PL/SQL procedure successfully completed.

六、Oracle 删除函数

如果你想从数据库中删除你创建的函数,你应该使用下面的语法。

语法:

DROP FUNCTION function_name;  

 

热门文章

优秀文章