现在的位置: 首页 > 综合 > 正文

oracle存储过程语法

2013年09月04日 ⁄ 综合 ⁄ 共 2748字 ⁄ 字号 评论关闭

 

  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   

抱歉!评论已关闭.