资源描述:
《存储过程和游标.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集合的选择等等1.存储过程结构1.1第一个存储过程Java代码1.create or replace procedure proc1( 2. p_para1 varchar2, 3. p_para2 out varchar2, 4. p_para3 in out varchar2 5.)a
2、s 6. v_name varchar2(20); 7.begin 8. v_name := '张三丰'; 9. p_para3 := v_name; 10. dbms_output.put_line('p_para3:'
3、
4、p_para3); 11.end; createorreplaceprocedureproc1(p_para1varchar2,p_para2outvarchar2,p_para3inoutvarchar2)asv_namevarchar2(20);beg
5、inv_name:='张三丰';p_para3:=v_name;dbms_output.put_line('p_para3:'
6、
7、p_para3);end;上面就是一个最简单的存储过程。一个存储过程大体分为这么几个部分:创建语句:createorreplaceprocedure存储过程名如果没有orreplace语句,则仅仅是新建一个存储过程。如果系统存在该存储过程,则会报错。Createorreplaceprocedure如果系统中没有此存储过程就新建一个,如果系统中有此存储过程则把原来删除掉,重
8、新创建一个存储过程。存储过程名定义:包括存储过程名和参数列表。参数名和参数类型。参数名不能重复,参数传递方式:IN,OUT,INOUTIN表示输入参数,按值传递方式。OUT表示输出参数,可以理解为按引用传递方式。可以作为存储过程的输出结果,供外部调用者使用。INOUT即可作输入参数,也可作输出参数。参数的数据类型只需要指明类型名即可,不需要指定宽度。参数的宽度由外部调用者决定。过程可以有参数,也可以没有参数变量声明块:紧跟着的as(is)关键字,可以理解为pl/sql的declare关键字,用于声明
9、变量。变量声明块用于声明该存储过程需要用到的变量,它的作用域为该存储过程。另外这里声明的变量必须指定宽度。遵循PL/SQL的变量声明规范。过程语句块:从begin关键字开始为过程的语句块。存储过程的具体逻辑在这里来实现。异常处理块:关键字为exception,为处理语句产生的异常。该部分为可选结束块:由end关键字结果。1.2存储过程的参数传递方式存储过程的参数传递有三种方式:IN,OUT,INOUT.IN按值传递,并且它不允许在存储过程中被重新赋值。如果存储过程的参数没有指定存参数传递类型,默认为
10、IN..Java代码1.create or replace procedure proc1( 2. p_para1 varchar2, 3. p_para2 out varchar2, 4. p_para3 in out varchar2 5.)as 6. v_name varchar2(20); 7.begin 8. p_para1 :='aaa'; 9. p_para2 :='bbb'; 10. v_name := '张三丰'; 11. p_para3 :=
11、v_name; 12. dbms_output.put_line('p_para3:'
12、
13、p_para3); 13. null; 14.end; 15. 16.Warning: Procedure created with compilation errors 17. 18.SQL> show error; 19.Errors for PROCEDURE LIFEMAN.PROC1: 20. 21.LINE/COL ERROR 22.-------- -------
14、--------------------------------------------------------------- 23.8/3 PLS-00363: expression 'P_PARA1' cannot be used as an assignment target 24.8/3 PL/SQL: Statement ignored createorreplaceprocedureproc1(p_para1varchar2,p_