个性化阅读
专注于IT技术分析

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函数示例

让我们的客户表。这个例子说明了创建和调用一个独立的功能。该函数将返回客户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功能

语法删除你创建的函数:

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

DROP FUNCTION function_name;
赞(2)
未经允许不得转载:srcmini » PL-SQL函数

相关推荐

评论 抢沙发

评论前必须登录!