Oracle存储过程
Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。
Oracle存储过程可以有无参数存储过程和带参数存储过程。
一、无参程序过程语法
1createorreplaceprocedure
NoParPro
2as ;
3begin
4 ;
5 exception //存储过程异常
6 ;
7end ;
8
2as ;
3begin
4 ;
5 exception //存储过程异常
6 ;
7end ;
8
二、带参存储过程实例
1createorreplaceprocedurequeryempname(sfindnoemp.empno%type)as
2sNameemp.ename% type;
3sjobemp.job% type;
4begin
5 ....
7exception
....
14end ;
15
2sNameemp.ename% type;
3sjobemp.job% type;
4begin
5 ....
7exception
....
14end ;
15
三、 带参数存储过程含赋值方式
1createorreplaceprocedurerunbyparmeters(isalinemp.sal%
type,
snameoutvarchar,sjobinoutvarchar )
2asicountnumber ;
3begin
4selectcount(*)intoicountfromempwheresal>isalandjob= sjob;
5ificount=1then
6 ....
9else
10 ....
12endif ;
13 exception
14whentoo_many_rowsthen
15DBMS_OUTPUT.PUT_LINE('返回值多于1行' );
16whenothersthen
17DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!' );
18end ;
19
snameoutvarchar,sjobinoutvarchar )
2asicountnumber ;
3begin
4selectcount(*)intoicountfromempwheresal>isalandjob= sjob;
5ificount=1then
6 ....
9else
10 ....
12endif ;
13 exception
14whentoo_many_rowsthen
15DBMS_OUTPUT.PUT_LINE('返回值多于1行' );
16whenothersthen
17DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!' );
18end ;
19
四、在Oracle中对存储过程的调用
过程调用方式一
1declare
2realsalemp.sal% type;
3realnamevarchar(40 );
4realjobvarchar(40 );
5begin //存储过程调用开始
6realsal:=1100 ;
7realname:='' ;
8realjob:='CLERK' ;
9runbyparmeters(realsal,realname,realjob); -- 必须按顺序
10DBMS_OUTPUT.PUT_LINE(REALNAME||''|| REALJOB);
11END ; //过程调用结束
12
2realsalemp.sal% type;
3realnamevarchar(40 );
4realjobvarchar(40 );
5begin //存储过程调用开始
6realsal:=1100 ;
7realname:='' ;
8realjob:='CLERK' ;
9runbyparmeters(realsal,realname,realjob); -- 必须按顺序
10DBMS_OUTPUT.PUT_LINE(REALNAME||''|| REALJOB);
11END ; //过程调用结束
12
过程调用方式二
1declare
2realsalemp.sal% type;
3realnamevarchar(40 );
4realjobvarchar(40 );
5begin//过程调用开始
6realsal:=1100 ;
7realname:='' ;
8realjob:='CLERK' ;
9runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); -- 指定值对应变量顺序可变
10DBMS_OUTPUT.PUT_LINE(REALNAME||''|| REALJOB);
11END ; //过程调用结束
12
2realsalemp.sal% type;
3realnamevarchar(40 );
4realjobvarchar(40 );
5begin//过程调用开始
6realsal:=1100 ;
7realname:='' ;
8realjob:='CLERK' ;
9runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); -- 指定值对应变量顺序可变
10DBMS_OUTPUT.PUT_LINE(REALNAME||''|| REALJOB);
11END ; //过程调用结束
12
至此,有关ORACLE的基本存储过程以及对Oracle存储过程的调用方式介绍完毕。