oracle function详解,Oracle函数用法详解「建议收藏」

oracle function详解,Oracle函数用法详解「建议收藏」本文概述函数是用于返回单个值的子程序。你必须在调用函数之前声明并定义一个函数。它可以在同一时间声明和定义,也可以在同一块中先声明然后定义。在Oracle中创建函数句法CREATE[ORREPLACE]FUNCTIONfunction_name[(parameter[,parameter])]RETURNreturn_datatypeIS|AS[declaration_sec…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197598.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月31日 下午7:22
下一篇 2025年8月31日 下午8:01


相关推荐

  • byte[]转换成String

    byte[]转换成String通过用例学习 Java 中的 byte 数组和 String 互相转换 这种转换可能在很多情况需要 比如 IO 操作 生成加密 hash 码等等 除非觉得必要 否则不要将它们互相转换 他们分别代表了不同的数据 专门服务于不同的目的 通常 String 代表文本字符串 byte 数组针对二进制数据通过 String 类将 String 转换成 byte 或者 byte 转换成 String 用 String getBytes 方法将字符

    2026年3月26日
    2
  • audio标签控制音量_HTML5中audio标签的使用

    audio标签控制音量_HTML5中audio标签的使用HTML5 中的新元素标签 src 音频文件路径 autobuffer 设置是否在页面加载时自动缓冲音频 autoplay 设置音频是否自动播放 loop 设置音频是否要循环播放 controls 属性供添加播放 暂停和音量控件 这些属性和元素标签的属性很类似如何工作 同样之间插入的内容是供不支持 audio 元素的浏览器显示的 Yourbrowserd

    2026年3月16日
    2
  • DropDownList1

    DropDownList1循环绑定数据到DropDownList1foreach(SPListlsinweb.Lists){LIColl.Add(ls.Title);//将数据保存list中}dwlist.DataSource=LIColl;//绑定…

    2022年7月18日
    19
  • tcp的四次挥手(为什么三次握手和四次挥手)

    在开始之前可以先了解一下TCP三次握手TCP四次挥手过程和状态变迁在断开连接之前客户端和服务器都处于ESTABLISHED状态,双方都可以主动断开连接,以客户端主动断开连接为优。第一次挥手:客户端打算断开连接,向服务器发送FIN报文(FIN标记位被设置为1,1表示为FIN,0表示不是),FIN报文中会指定一个序列号,之后客户端进入FIN_WAIT_1状态。也就是客户端发出连接释放报文段(FIN报文),指定序列号seq=u,主动关闭TCP连接,等待服务器的确认。第二次挥…

    2022年4月13日
    66
  • export报错SyntaxError: Unexpected token export

    export报错SyntaxError: Unexpected token export情景重现 a jsexportlett function console log 1 b jsleta require a a test 运行 nodeb 即出现如下报错 exportdefaul SyntaxError Unexpectedto 解决方法 a

    2026年3月17日
    2
  • android中gravity和layoutgravity的区别[通俗易懂]

    android中gravity和layoutgravity的区别[通俗易懂]android中gravity和layoutgravity的区别_百度知道1个回答-最新回答:2015年02月07日-1人觉得有用[专业]答案:android:gravity:设置的是控件自身上面的内容位置android:layout_gravity:设置控件本身相对于父控件的显示位置。

    2022年7月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号