存储过程 : 将SQL或者PL/SQL代码块集中用于完成特定功能的集合.
语法:
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
BEGIN
< procedure_body >
END procedure_name;
- procedure-name 指定的程序的名称
- [OR REPLACE] 选项允许修改现有的程序
- 可选的参数列表中包含的名称,模式和类型的参数。IN表示该值将被从外部传递,OUT表示该参数将被用于从过程返回一个值到外面。IN OUT参数传递的初始值到一个子程序,并返回一个更新值给调用者。它可以被分配一个值,其值可被读取。
- procedure-body 包含可执行部分
- AS关键字来代替了IS关键字用于创建一个独立的程序。
执行过程:
exec procedure_name;
--or
call procedure_name;
--调用有参过程
BEGIN
ShowInfo('MUSIC'); --参数类型要和定义过程时一一对应。
END;
--调用无参过程
BEGIN
ShowInfo;
END;
删除过程:dorp procedure_name;
示例
DECLARE
a number;
b number;
c number;
PROCEDURE findMin(x IN number, y IN number, z OUT number) IS
BEGIN
IF x < y THEN
z:= x;
ELSE
z:= y;
END IF;
END;
BEGIN
a:= 23;
b:= 45;
findMin(a, b, c);
dbms_output.put_line(' Minimum of (23, 45) : ' || c);
END;
DECLARE
a number;
PROCEDURE squareNum(x IN OUT number) IS
BEGIN
x := x * x;
END;
BEGIN
a:= 23;
squareNum(a);
dbms_output.put_line(' Square of (23): ' || a);
END;