- create or replace procedure p_rpt_test is
- /**********************************************************************************
- NAME: p_rpt_test
- PURPOSE: 报表数据测试
-
- REVISIONS:
- Ver Date Author Description
- --------- ---------- ---------------------- ------------------------------------
- V1.0 2012-09-12 WangXL 12345 1.创建此存储过程
-
- RETURN: 无返回值
-
- NOTES: 1、使用到不带参数的游标(即cursor)
- 2、使用到for in loop end loop循环
- 3、游标打开后,必须关闭。
-
- **********************************************************************************/
- /*按照规划,定义number,string,date三种类型变量名称*/
- i_id number(8);
- str_testname varchar2(30);
- dt_createdate date;
- /*按照规划,定义cursor变量名称,游标是一个查询结果集,可以传入变量参数,也可以不传。
- 这里的结果集是test1表的三个字段*/
- cursor cur_test1 is
- select a.id, a.testname, a.createtime from test1 a;
-
- begin
-
- /* for in loop end loop 循环体 */
- for c in cur_test1 loop
- -- 该循环体中,游标自动打开关闭,不需要手工打开再关闭。
-
- -- c 是循环内部变量,为了开发方便,所以简单命名为c。
- -- c 根据循环,依次读取游标cur_test1的每一行记录。
-
- --如果数据量很大,使用其他的方式取游标记录,如bulk collect into
- i_id := c.id; --赋值游标中一行记录的id列值到i_id变量上
- str_testname := c.testname || 'xx'; --将游标中一行记录的testname列值加上'xxx'处理后赋值到str_testname变量上
- dt_createdate := c.createtime - 2;
-
- insert into test2
- (id, testname, createtime)
- values
- (i_id, str_testname, dt_createdate); --将变量值插入到test2表中
-
- end loop;
-
- commit; --所有记录插入后,一次性提交。
-
-
-
- open cur_test1; --打开定义好的游标(cursor)
-
- /*loop end loop循环体*/
-
- loop
- fetch cur_test1
- into i_id, str_testname, dt_createdate;
- --fetch就是取游标中一行记录到三个变量中
- exit when cur_test1%notfound; --如果游标已经没有记录了,那么%notfound就是true,从而退出循环;如果还有记录继续下一步
-
- str_testname := str_testname || 'yy'; --将游标中一行记录的testname列值加上'xxx'处理后赋值到str_testname变量上
- dt_createdate := dt_createdate + 2;
-
- insert into test2
- (id, testname, createtime)
- values
- (i_id, str_testname, dt_createdate); --将变量值插入到test2表中
-
- end loop;
-
- commit; --所有记录插入后,一次性提交。
- close cur_test1; --关闭开头打开的游标
- exception
- when others then
- rollback; --如果上面操作失败,主动使用rollback取消所有的操作。
- dbms_output.put_line(sqlerrm);
- end;
posted @
2013-07-16 08:35
楚楚动的人
阅读(
309)
评论()
编辑
收藏
举报