首页 > 经验记录 > 数据库 > PL/SQL子程序(过程、函数)

PL/SQL子程序(过程、函数)

子程序=过程(存储过程)、函数

 

在开发中经常会出现一些重复的代码块,Oracle为了方便管理这些代码块,往往会将其封装在一个特定的结构体中,这样的结构体就是子程序。定 义为子程序的代码块也将成为Oracle数据库的对象,会将其对象信息保存在相应的数据字典之中。

 

 

定义过程

过程是在大型数据库系统之中专门定义的一组SQL语句集,它可以定义用户操作参数,并且存在于数据库之中,当使用时直接调用即可。

在Oracle之中可以用以下的语法来定义存储过程。

CREATE [OR REPLACE] PROCEDURE 过程名([参数名 [参数模式]  NOCOPY 数据类型] [,参数名称 [参数模式] NOCOPY 数据类型,]……)

                        [AUTHID [DEFINER | CURRENT_USER]]

            AS | IS

                        [PRAGMA AUTONOMOUS_TRANSACTION;]

                        声明部分;

            BEGIN

                        程序部分;

            EXCEPTION

                        异常处理;

            END;

            /

 

            过程=过程的声明 + PL/SQL块

 

定义完过程之后,如果要执行它则要采用“EXEC 过程名”的形式

如果创建的过程出现了错误,那么查看错误使用“SHOW ERRORS”完成

 

 

 

定义函数

函数(又称存储函数)也是一种较为方便的储存结构,用户定义的函数可以被SQL语句或者PL/SQL语句程序直接进行调用,实际上函数与过程最大的区别就在于函数是有返回值的,而过程只能已开OUT或 IN OUT来返回数据,在Oracle中函数的定义格式如下:

 

CREATE [OR REPLACE] FUNCTION 函数名([参数…])

            RETURN 返回值类型

            [AUTHID [DEFINER | CURRENT_USER]]

            AS | IS

[PRAGMA AUTONOMOUS_TRANSACTION;]

                        声明部分;

            BEGIN

                        程序部分;

                        [RETURN 返回值;]

            EXCEPTION

                        异常处理;

            END [函数名];

            /

 

通过DUAL这张虚拟表可以完成函数的验证(建议使用);除此之外还能使用CALL操作,将函数的返回值绑定在一个变量之上

CALL 函数 INTO 变量;

 

 

 

 


EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00