PL-SQL函数

本文概要

  • PL / SQL函数示例
  • 另一PL / SQL函数示例
  • 使用表PL / SQL函数示例
  • PL / SQL递归函数
  • 示例计算阶乘若干
  • PL / SQL DROP功能
在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函数示例让我们的客户表。这个例子说明了创建和调用一个独立的功能。该函数将返回客户CUSTOMERS表的总数。
创建客户表,并有记录它。
ID名称部门薪水
1alexWeb开发人员35000
2瑞奇program developer45000
3mohanweb designer35000
4dilshad数据库管理器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功能语法删除你创建的函数:
【PL-SQL函数】如果你想从数据库中删除你创建的函数,你应该使用下面的语法。
DROP FUNCTION function_name;

    推荐阅读