Oracle 学习笔记14 —— 函数

本文介绍了数据库中的函数与过程的不同之处,重点讲解了函数的特点及如何创建和调用函数。通过实例演示了函数的定义和使用方法。

函数与过程非常类似,它也是一种存储在数据库中的命名程序库,并且函也可以接收零个或多个输入参数。参数与过程的主要区别在于,函数必须有返回值,并且可以作为一个表达式的一部分,函数不能作为一个完整的语句使用。函数返回值的数据类型在创建函数时定义。函数定义的语法如下:

create [ or replace] function function_name (parameter, [parameter])
  return data_type is
  [local declarations]
begin
  execute statements
[exception 
exception handlers]
end[ function_name]
存储过程和函数之间的主要区别有两处:第一是在函数头部必须使用return 字指定函数返回的数据类型;二是在函数体内,在函数体内的任何地方都可以使用return语句返回结果值,返回值的数据类型必须与函数头部声明的相同。
例如,下面创建了一个用于求平均数的函数。
SQL> create or replace function fun_average(num1 number, num2 number)
  2  return number is
  3    res number;
  4  begin  res:= (num1 + num2) / 2;
  5    return(res);
  6  end fun_average;
  7  /

函数已创建。

调用函数时必须使用一个变量来保存返回的结果值,这样函数就组成了表达式的一部分。这也意味着函数不能像过程那样独立的调用,它只能作为表达式的一部分。例如,在下面的匿名程序块中调用函数 fun_average,以获取两个数的平均值。
SQL> set serveroutput on
SQL> declare
  2    avg_number number;
  3  begin
  4    avg_number := fun_average(22,33);
  5    dbms_output.put_line(avg_number);
  6  end;
  7  /
27.5

PL/SQL 过程已成功完成。

SQL> select fun_average(22,33) from dual;

FUN_AVERAGE(22,33)
------------------
              27.5

理论上,在函数中也可以使用out类型的参数,但是如果在函数中同时使用return返回值和out参数很容易产生混淆。所以,在创建函数时应该使用return 语句返回一个单独的值,而将out参数用于过程。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值