Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。
Oracle存储过程可以有无参数存储过程和带参数存储过程。
一、无参程序过程语法
1 create or replace procedure
NoParPro
2 as
;
3 begin
4
;
5
exception //存储过程异常
6
;
7 end
;
8
二、带参存储过程实例
1 create or replace procedure queryempname(sfindno emp.empno%type) as
2 sName emp.ename%
type;
3 sjob emp.job%
type;
4 begin
5 ....
7 exception
....
14 end
;
15
三、 带参数存储过程含赋值方式
1 create or replace procedure runbyparmeters (isal in emp.sal%
type,
sname out varchar,sjob in out varchar
)
2 as icount number
;
3 begin
4 select count(*) into icount from emp where sal>isal and job=
sjob;
5 if icount=1 then
6 ....
9 else
10 ....
12 end if
;
13
exception
14 when too_many_rows then
15 DBMS_OUTPUT.PUT_LINE('返回值多于1行'
);
16 when others then
17 DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!'
);
18 end
;
19
四、在Oracle中对存储过程的调用
过程调用
方式一
1 declare
2 realsal emp.sal%
type;
3 realname varchar(40
);
4 realjob varchar(40
);
5 begin //存储过程调用开始
6 realsal:=1100
;
7 realname:=''
;
8 realjob:='CLERK'
;
9 runbyparmeters(realsal,realname,realjob); --
必须按顺序
10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||
REALJOB);
11 END
; //过程调用结束
12
过程调用方式二
1 declare
2 realsal emp.sal%
type;
3 realname varchar(40
);
4 realjob varchar(40
);
5 begin //过程调用开始
6 realsal:=1100
;
7 realname:=''
;
8 realjob:='CLERK'
;
9 runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); --
指定值对应变量顺序可变
10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||
REALJOB);
11 END
; //过程调用结束
12