-
Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。
1.Oracle存储过程可以有无参数存储过程和带参数存储过程。
2.一、无参程序过程语法
3.1 create or replace procedure NoParPro 4.2 as ; 5.3 begin 6.4 ;
7.5 exception //存储过程异常
8.6 ;
9.7 end; 10.8
11.
12. 二、带参存储过程实例
13. 1 create or replace procedure queryempname(sfindno emp.empno%type) as 14. 2 sName emp.ename%type;
15. 3 sjob emp.job%type;
16. 4 begin 17. 5 ....
18. 7 exception
19. ....
20.14 end; 21.15
22.
23. 三、 带参数存储过程含赋值方式
24. 1 create or replace procedure runbyparmeters (isal in emp.sal%type, 25. sname out varchar,sjob in out varchar) 26. 2 as icount number; 27. 3 begin 28. 4 select count(*) into icount from emp where sal>isal and job=sjob; 29. 5 if icount=1 then 30. 6 ....
31. 9 else 32.10 ....
33.12 end if; 34.13 exception
35.14 when too_many_rows then 36.15 DBMS_OUTPUT.PUT_LINE('返回值多于1行'); 37.16 when others then 38.17 DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!'); 39.18 end; 40.19
41.
42. 四、在Oracle中对存储过程的调用
43. 过程调用方式一
44. 1 declare 45. 2 realsal emp.sal%type;
46. 3 realname varchar(40); 47. 4 realjob varchar(40); 48. 5 begin //存储过程调用开始 49. 6 realsal:=1100;
50. 7 realname:=''; 51. 8 realjob:='CLERK'; 52. 9 runbyparmeters(realsal,realname,realjob); --必须按顺序
53.10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB); 54.11 END; //过程调用结束 55.12
56.
57. 过程调用方式二
58. 1 declare 59. 2 realsal emp.sal%type;
60. 3 realname varchar(40); 61. 4 realjob varchar(40); 62. 5 begin //过程调用开始 63. 6 realsal:=1100;
64. 7 realname:=''; 65. 8 realjob:='CLERK'; 66. 9 runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); --指定值对应变量顺序可变
67.10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB); 68.11 END; //过程调用结束 69.12
本文出自:亿恩科技【www.enkj.com】