存储过程的创建及测试
注意:本文档的代码与介绍的操作均是在PLSQL Developer 上完成的。
首先,在packages里边创建一个自己的存储过程包,在里边声明要写的存储过程;然后在package bodies 目录下将存储过程实现。需要注意的是,存储过程的名称,参数类型和参数名(这里特别强调参数名称,作为初学者,我在这上边吃过亏,所以印象深刻)要完全一致。
a.下边我们来一起写一个不需要参数的存储过程
声明存储过程截图如下:
编写完成点击按钮进行编译。
实现存储过程截图如下:
编写完成同样要点击进行编译。
最后我们来测试一下存储过程编写的是否正确。新建一个 Test Window ,调用存储过程采用“包名.存储过程名”的方式,如下图:
注意,虽然该存储过程没有参数,但是调用的时候要写一个小括号在存储过程名后边。查询数据库表LJJ_INCOMESSAGE 中的数据变化。打开DBMS输出窗口查看存储过程的输出结果。
b.序列的创建
Oracle序列(sequence)是一种数据库项,能够生成一个整数序列。通常用于填充数字类型的主键列。
在sequences包下新建一个序列,各数据设置如下图:
点击界面下方的“应用”按钮,一个序列就创建成功了。
c.有参数的存储过程的创建及序列的使用
与创建无参数的存储过程类似,首先在packages 的LJJ_STUDY中声明存储过程,并进行编译,如下图:
然后在package body 中进行存储过程的具体实现,并进行编译,如下图:
注意:倒数第二行的commit很重要,在数据库中进行的增删改操作之后都要执行commit,否则通过oracleclient连接数据库时获取不到最新数据。
d.抛出异常的存储过程的创建及测试
有异常抛出的存储过程创建时多两个输出参数,存储过程声明截图如下:
存储过程的实现如下图:
e.游标的使用
前面介绍的存储过程都是对数据的增加,修改或者删除,那么又返回值的查询操作要怎么完成呢?
首先,介绍一下游标的概念。游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录。
接下来我们一起看看游标是如何定义,如何使用的吧。
先声明对游标的引用,如下图:
带有游标参数的存储过程的声明如下图:
游标名称为C_group_no,属于输出参数。
存储过程的实现如下图:
游标在存储过程中的使用非常普遍,它操作灵活,使用方便,但是要注意字符串的拼接要非常认真,容易出错。