一、概述
1.函数是可以返回值的命名的plsql子程序
2.oracle的函数是一个独有的对象,它也是由plsql语句编写而成。
但不同之处在于:函数必须返回某些值,而存储过程可以不返回任何值。
3.创建函数的语法:
CREATE [OR REPLACE] FUNCTION
<function name> [(param1,param2)]
RETURN <datatype> IS|AS
[local declarations]
BEGIN
excutable statements;
RETURN result;
EXCEPTION
exception handlers;
END;
4.定义函数的限制
(1)函数只能接收IN参数,而不能接收IN OUT或OUT参数
(2)形参不能是plsql类型
(3)函数的返回类型也必须是数据库类型
5.访问函数的两种方式:
(1)使用plsql块
(2)使用sql语句
二、使用示例
判断今天是否为当月的第一天,是返回1,否则返回0
统计字符串占的字节数
根据员工编号获得所在部门的名称
判断输入的工资是否介于最高工资和最低工资之间
使用游标统计emp表的记录数量
三、过程和函数的比较
过程 | 函数 |
作为PL/SQL语句执行 | 作为表达式的一部分调用 |
在规格说明中不包含RETURN子句 | 必须在规格说明中包含RETURN子句 |
不返回任何值 | 必须返回单个值 |
可以包含RETURN语句,但是与函数不同,它不能用于返回值 | 必须包含至少一条RETURN语句 |