oracle存储过程语法

 

  1. 存储过程 包含三部分: 声明,执行部分,异常。    
  2. 可以有无参数程序和带参数存储过程。    
  3. 无参程序语法    
  4. 1 create or replace procedure NoParPro   
  5. 2 as   ;   
  6. 3 begin   
  7. 4  ;   
  8. 5 exception   
  9. 6      ;   
  10. 7 end;   
  11. 8    
  12.   
  13.    带参存储过程实例    
  14.  1 create or replace procedure queryempname(sfindno emp.empno%type) as   
  15.  2        sName emp.ename%type;   
  16.  3        sjob emp.job%type;   
  17.  4 begin   
  18.  5        ....   
  19.  7 exception   
  20.           ....   
  21. 14 end;   
  22. 15    
  23.   
  24.    带参数存储过程含赋值方式    
  25.  1 create or replace procedure runbyparmeters  (isal in emp.sal%type,    
  26.                             sname out varchar,sjob in out varchar)   
  27.  2  as icount number;   
  28.  3  begin   
  29.  4       select count(*) into icount from emp where sal>isal and job=sjob;   
  30.  5       if icount=1 then   
  31.  6         ....   
  32.  9       else  
  33. 10         ....   
  34. 12       end if;   
  35. 13  exception   
  36. 14       when too_many_rows then   
  37. 15       DBMS_OUTPUT.PUT_LINE('返回值多于1行');   
  38. 16       when others then   
  39. 17       DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');   
  40. 18  end;   
  41. 19    
  42.   
  43.   过程调用   
  44.   方式一   
  45.  1 declare   
  46.  2        realsal emp.sal%type;   
  47.  3        realname varchar(40);   
  48.  4        realjob varchar(40);   
  49.  5  begin   
  50.  6        realsal:=1100;   
  51.  7        realname:='';   
  52.  8        realjob:='CLERK';   
  53.  9        runbyparmeters(realsal,realname,realjob);     --必须按顺序   
  54. 10        DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);   
  55. 11  END;   
  56. 12    
  57.   
  58.   方式二   
  59.  1 declare   
  60.  2       realsal emp.sal%type;   
  61.  3       realname varchar(40);   
  62.  4       realjob varchar(40);   
  63.  5 begin   
  64.  6       realsal:=1100;   
  65.  7       realname:='';   
  66.  8       realjob:='CLERK';   
  67.  9       runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);  --指定值对应变量顺序可变   
  68. 10       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);   
  69. 11 END;   
  70. 12   
存储过程 包含三部分: 声明,执行部分,异常。 
可以有无参数程序和带参数存储过程。 
无参程序语法 
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 

  过程调用
  方式一
 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 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值