PL / SQL函数
PL / SQL功能 PL / SQL函数与PL / SQL过程非常相似。过程与函数之间的主要区别在于,函数必…
PL / SQL功能
PL / SQL函数与PL / SQL过程非常相似。过程与函数之间的主要区别在于,函数必须始终返回值,另一方面,过程可能会也可能不会返回值。除此之外,PL / SQL过程的所有其他内容也适用于PL / SQL函数。
创建函数的语法:
CREATE [OR REPLACE] FUNCTION function_name [parameters] [(parameter_name [IN | OUT | IN OUT] type [, ...])] RETURN return_datatype {IS | AS} BEGIN < function_body > END [function_name];
这里:
- FUNCTION_NAME:指定函数的名称。
- [OR REPLACE]选项允许修改现有函数。
- 可选参数列表包含参数的名称,模式和类型。
- IN表示将从外部传递值,而OUT表示将使用此参数返回过程外部的值。
该函数必须包含一个return语句。
- RETURN子句指定您要从函数返回的数据类型。
- Function_body包含可执行部分。
- 使用AS关键字代替IS关键字创建独立函数。
PL / SQL函数示例
让我们看一个创建函数的简单示例。
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
另一个PL / SQL函数示例
让我们以一个示例来演示声明,定义和调用一个简单的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
使用表的PL / SQL函数示例
让我们来一张客户桌。本示例说明了如何创建和调用独立函数。此函数将返回客户表中的客户总数。
创建客户表并在其中有记录。
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.
调用PL / SQL函数:
创建函数,必须定义函数。要使用一个函数,您将必须调用该函数来执行定义的任务。调用函数,程序控制将转移到被调用函数。
成功完成定义的任务后,调用函数将程序控制权返回给主程序。
要调用函数,您必须将必需的参数以及函数名称一起传递,如果函数返回值,则可以存储返回的值。以下程序从一个匿名块中调用函数totalCustomers:
DECLARE c number(2); BEGIN c := totalCustomers(); dbms_output.put_line('Total no. of Customers: ' || c); END; /
在SQL提示符下执行上述代码后,您将获得以下结果。
Total no. of Customers: 4 PL/SQL procedure successfully completed.
PL / SQL递归函数
您已经知道一个程序或一个子程序可以调用另一个子程序。当子程序调用自身时,它称为递归调用,并且该过程称为递归。
计算数字阶乘的示例
让我们以一个例子来计算数字的阶乘。本示例通过递归调用自身来计算给定数字的阶乘。
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; /
在SQL提示符下执行上述代码后,将产生以下结果。
Factorial 6 is 720 PL/SQL procedure successfully completed.
PL / SQL删除功能
删除创建的函数的语法:
如果要从数据库中删除创建的函数,则应使用以下语法。
DROP FUNCTION function_name;
类别:MySQL、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!