Oracle存储过程可以有无参数存储过程和带参数存储过程

论坛 期权论坛 脚本     
匿名技术用户   2020-12-30 06:23   104   0

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
; //过程调用结束
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP