本文概述

函数是用于返回单个值的子程序。你必须在调用函数之前声明并定义一个函数。它可以在同一时间声明和定义, 也可以在同一块中先声明然后定义。

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

oracle function详解,Oracle函数用法详解相关推荐

  1. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

  2. eval 函数 java_[Java教程]eval()函数用法详解

    [Java教程]eval()函数用法详解 0 2015-12-14 11:00:26 eval()函数用法详解: 此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval ...

  3. python lambda函数-Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要 ...

  4. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  5. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  6. LayoutInflater的inflate函数用法详解

    LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...

  7. c++ memset 语言_C++中memset函数用法详解

    本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...

  8. mysql: union / union all / 自定义函数用法详解

    mysql: union / union all http://www.cnblogs.com/wangyayun/p/6133540.html mysql:自定义函数用法详解 http://www. ...

  9. python中mat函数_Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...

  10. ROW_NUMBER() OVER()函数用法详解

    今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg   A  , 查询表sys_equi_dict   B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...

最新文章

  1. 网站优化新方式亟需创新
  2. 函数节流与防抖的实现
  3. 配置spring整合jpa自动生成数据表
  4. WebView http图片加载失败
  5. 什么是Session分布式共享
  6. Git客户端(Windows系统)的使用(Putty)(转)
  7. 【Spring】Spring 依赖注入之手动注入
  8. mysql 查看锁表_MySQL的四种事务隔离级别
  9. sas编程技术教程 人大经济论坛sas培训
  10. python35安装教程_【邢不行量化小讲堂35-python量化入门】建议收藏|Windows下安装TA-Lib终极教程(下)...
  11. 演讲者模式投影到幕布也看到备注_PPT制作技巧:如何实现ppt放映不同界面(演讲者模式)?...
  12. 共享内存,信号,信号灯集
  13. html5 css3制作柱形图,一步一步教你实现纯CSS的柱形图
  14. 程序员考公指南1-59
  15. 初尝vue-element-admin
  16. html5在哪编辑器,HTML5文本编辑器推荐-属于Web开发人员的HTML5编辑器
  17. IDEA注释模板设置【非常实用】
  18. ios快捷指令:一键登录/登出南京大学校园网
  19. 2022跨年烟花代码|用Python送你一场跨年烟花秀
  20. 用USBwriter往优盘写入.iso文件后,优盘无法格式化

热门文章

  1. 迅雷Chrome插件引发的Uncaught ReferenceError: xl_chrome_menu is not defined
  2. 计算机网络课程设计小型企业局域网的组建,计算机网络课程设计小型企业局域网的组建.doc...
  3. Windows系统安装运行库
  4. win10自动停用打印服务器,技术员详解win10系统添加打印机总是自动关闭打印服务的技巧...
  5. c#餐饮系统打印机_C#实现打印机功能
  6. python爬虫入门——爬取淘宝商品评论信息
  7. 数据结构考研:随机存取、顺序存取、随机存储和顺序存储的区别/详细解释(计算机/软件工程/王道论坛)
  8. fedora 18 视频解码器安装
  9. 你不得不知道的通信行业基础介绍
  10. Android pk8/x509生成keystore