大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
本文概述
函数是用于返回单个值的子程序。你必须在调用函数之前声明并定义一个函数。它可以在同一时间声明和定义, 也可以在同一块中先声明然后定义。
在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;
/
执行完上述代码后, 你将得到以下结果。
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;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197598.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...