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;
热门文章
优秀文章