Oracle为了方便管理这些代码块,往往会将其封装到一个特定的结构体之中,这样的结构体在Oracle之中就被称为子程序
在Oracle中子程序分为两种:过程、函数
过程定义语法
CREATE [OR REPLACE] PROCEDURE 过程名称([参数名称 [参数模式]NOCOPY 数据类型 [,参数名称 [参数模式] NOCOPY 数据类型 , ….]])[AUTHID [DEFINER | CURRENT_USER]]
AS | IS
[PRAGMA AUTONOMOUS_TRANSACTION ;]
声明部分 ;
BEGIN
程序部分 ;
EXCEPTION
异常处理 ;
END;
/
函数定义语法:
CREATE [OR REPLACE] FUNCTION 函数名([参数 , [参数 , …]])
RETURN 返回值类型
[AUTHID {DEFINER | CURRENT_USER}]
AS | IS
[PRAGMA AUTONOMOUS_TRANSACTION ;]
声明部分 ;
BEGIN
程序部分 ;
[RETURN 返回值 ;]
[EXCEPTION
异常处理]
END [函数名] ;
/
参数模式
在定义子程序时往往需要接收传递的参数,这样对于形式参数的定义就分为了三类:IN、OUT和IN OUT模式,此三类形式定义如下:
IN (默认,数值传递):在子程序之中所做的修改不会影响原始参数内容;
OUT (空进带值出):不带任何数值传到子程序之中,子程序可以通过此变量将数值返回给调用处;
IN OUT