CREATE OR REPLACE PROCEDURE 存储过程名称【(存储过程参数)】IS
BEGIN
pl/sql语句;
【EXCEPTION】
【异常pl/sql语句】;
END 存储过程名称;
注:
1、存储过程参数是存储过程被调用或执行时用到的参数,不是存储过程定义的内部变量,内部变量是is/as 关键字后面定义。
2、执行存储过程:
sql*plus 中 execute 存储过程名称;
pl/sql块 中 begin 存储过程名称; end;
3、存储过程的参数包括 IN、OUT、IN OUT 三种。
3.1)in模式参数是一种输入类型参数,参数由调用方式传入并只能被存储过程读取。
向存储过程传递参数
指定名称传递 pro_name(prarmeter1 => value1…)
按位置传递
混合传递(名称+位置),当使用指定名称传递之后,后面的参数都要指定名称。
create or replace procedure insert_dept(
num_deptno in number,--参数名 in 参数类型 且不能加长度,in参数默认值形式 (num_deptno in number default '41401')
var_ename in varchar2
) is
begin
....
end insert_dept;
3.2)out模式参数为输出类型的参数,表示参数在存储过程中已经赋值,并且这个参数可以传递到存储过程以外的环节中,关键字OUT。
在pl/sql块中调用out模式需要在declare部分定义out 参数的变量
declare
var_name dept.dname%type;
begin
insert_dept(99,var_name);
end;
在sql/plus中调用out模式需要声明variable
variable var_dname varchar2(50);
exec insert_dept(99,var_dname);
create or replace procedure insert_dept(
num_deptno in number,--参数名 in 参数类型 且不能加长度
var_ename out dept.dname%type --参数名 out 参数类型
) is
begin
....
end insert_dept;
4、删除存储过程 DROP PROCEDURE 存储过程名称;