存储过程与函数有如下优点:
可重用性:一旦命名并保存在数据库中以后,任何应用都可以调用
抽象和数据隐藏:用户只需知道存储过程与函数对外提供的功能,而无需知道其内部实现
安全性:通过存储过程与函数提供数据对象的操作权限,而不必给出存储过程与函数涉及
每个对象的权限,提高了安全性。
14.1
存
储
过
程
存储过程就是命了名的 PL/SQL 块,可以有零个或多个参数,以编译后的形式存放在数据库
中,然后由开发语言调用或者在 PL/SQL 块中调用,是一种用来执行某些操作的子程序。
14.1.1
存储过程的创建
存储过程的创建和其他数据库对象一样,用 CREATE 语句来创建。创建存储过程的语法如下:
CREATE [OR REPLACE] PROCEDURE
[schema.]procedure_name [(argument [in|out|in out] type
…
)]
IS | AS
[
本地变量声明
]
BEGIN
执行语句部分
[EXCEPTION]
错误处理部分
END[procedure_name];
/
其中:CREATE 是创建存储过程,procedure_name 是要创建的存储过程名,argument 是参数,
关于参数和 in,out,in out 关键字,可参考本章 14.1.2 节,type 相关参数的数据类型、声明段位
于 IS 或 AS 和 BEGIN 关键字之间,IS 或 AS 关键字是等价的,可按自己的习惯选择。
OR REPLACE 关键字和我们前面介绍过的视图修改类似,如果要改变存储过程的代码,可以
删除该过程然后重新创建,我们也可以使用 OR REPLACE 关键字把这两个操作在一步中完成,如
果过程存在,先删除,如果过程不存在,就直接创建。但是如果过程存在而没有使用 OR REPLACE
关键字,想一想会出现什么问题?
注意:和匿名块不同,过程和函数声明中不能用
DECLARE
关键字,而是用
IS
或
AS
关键字。可
执行段位于
BEGIN
和
EXCEPTION
关键字之间,如果没有异常处理段,则位于
BEGIN
和
END
关键字
第
章
14
创建存储过程和函数