12、Oracle 教程 PL/SQL 基础 - 存储过程

过程可以通过OUT或者IN OUT参数返回数据。可以作为一个单独的语句执行;

PROCEDURE [shema.]name[(parameter[, parameter...])] [AUTHID DEFINER | CURRENT_USER]
IS
    [declarations]
BEGIN
    executable statements --这个过程被调用时要执行的语句
[ EXCEPTION
    exception handlers --异常处理句柄
]
END [name];

schema:拥有这个过程的模式的名字,这个元素是可选的。默认就是当前的用户名。如果指定的模式名不是当前的用户名,则当前的用户名必须要有在其他模式下创建过程的权限;

name:过程的名字

parameters:可选的参数列表,可以向过程传入信息或者该过程传递给调用程序的传出信息;

AUTHID子句:定义该过程是用定义者(所有者)的权限运行,还是当前用户的全新运行。前一种模式叫做定义者权限模型,后一种模式叫做调用者权限模型;

declarations:声明过程的本地标识符。如果没有声明,在IS和BEGIN之间就没有任何语句。(也就是定义局部变量)

注意: 在定义的时候,如果没有参数,就不要有括号。例如:create or replace procedure test1() 这样会报错,要把括号去掉。

在PL/SQL中调用存储过程:

test_procedure();--分号必须要,如果没有参数,这个括号是可以省略的。

或者:

CALL test_procedure();

在存储过程中,可以使用return语句,目的只是提前结束过程。(通常情况下,不要这么做)。

删除存储过程:

DROP PROCEDURE [schema.]procedure_name