Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
函数和存储过程非常类似,也是可以存储在 Oracle 数据库中的 PL/SQL代码块,但是有返回值。
可以把经常使用的功能定义为一个函数,就像系统自带的函数(例如前面章节介绍的大小写转换,求绝对值等函数)一样使用。
函数创建的基本语法格式如下所示
CREATE OR REPLACE FUNCTION 函数名
[< 参数 1> INIOUTIIN OUT<参数类型 >[ 默认值 |:= 初始值 ]]
[,<参数 2> INIOUTIIN OUT< 参数类型 >[ 默认值 |:= 初始值 ],…]
RETURN 返回数据类型
ISIAS
[局部变量声明 ]
BEGIN
程序语句序列
[EXCEPTION]
异常处理语句序列
END 过程名
其中的参数说明如下。
(1)OR REPLACE 为可选参数,表示如果数据库中已经存在要创建的函数,则先把原先函数删除再重新建立函数,或者说覆盖原先的函数。
(2)如果过程中存在参数,则需要在参数后面使用“INIOUTIN OUT”关键字。如果是输入参数则参数后面用“IN”关键字,表示接受外部过程传递来的值;如果是输出参数,
则参数后面用“OUT’关键字,表示此参数将在过程中被复制,并传递给过程体外;如果是“IN OUT”关键字,
则表示该参数既具有输入参数特性,又具有输出参数的特性。默认是 I 参数,即如果不写就默认为 IN 参数。
(3)参数类型不能指定长度,只需给出类型即可
(4)函数的返回类型是必选项
(5)局部变量声明中所定义的变量只在该函数中有效。(6)局部变量声明、程序语句序列和异常处理语句序列定义以及使用同上一章 PL/SQL块。在函数的主程序段中,必须使用 RETURN 语句返回最终的函数值,并且返回值的数据类型要和声明的时候说明的类型一样。
函数的调用基本上与系统内置函数的调用方法相同。可以直接在 SQL Plus 中使用,也可以在存储过程中使用。后面将通过范例来介绍如何调用。
函数的删除与存储过程的删除类似,基本语法格式如下所示。
DROP FUNCTION 函数名