Oracle函数用法详解

本文概述

  • 在Oracle中创建函数
  • Oracle函数示例
  • 另一个Oracle函数示例
  • 使用表的Oracle函数示例
  • Oracle递归函数
  • 计算数字阶乘的示例
  • Oracle Drop函数
函数是用于返回单个值的子程序。你必须在调用函数之前声明并定义一个函数。它可以在同一时间声明和定义, 也可以在同一块中先声明然后定义。
在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函数示例让我们看一个创建函数的简单示例。
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函数示例让我们以一个示例来演示声明, 定义和调用一个简单的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表中的CUSTOMERS总数。
创建客户表并在其中有记录。
Customers
Id Name Department Salary
1 alex web developer 35000
2 ricky 程序开发人员 45000
3 mohan 网页设计师 35000
4 dilshad 数据库管理器 44000
创建函数:
CREATE OR REPLACE FUNCTION totalCustomers RETURN number IS total number(2) := 0; BEGIN SELECT count(*) into total FROM customers; RETURN total; END; /

【Oracle函数用法详解】执行完上述代码后, 你将得到以下结果。
Function created.

调用Oracle函数:
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.

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; /

在SQL提示符下执行上述代码后, 将产生以下结果。
Factorial 6 is 720 PL/SQL procedure successfully completed.

Oracle Drop函数如果要从数据库中删除创建的函数, 则应使用以下语法。
句法:
DROP FUNCTION function_name;

    推荐阅读