procedure1:

 CREATE OR REPLACE PROCEDURE UPDATE_AC02_AAE140_WYL(PI_AAB001 IN NUMBER,
PO_FHZ OUT VARCHAR2,
PO_MSG OUT VARCHAR2) IS
V_AAZ159 NUMBER(20);
--说明:以养老参保的情况为标准(即ac02为准),添加aae140 = 410,510的险种
--20150919 wyl BEGIN
--1 清空 备份表1
DELETE FROM AC02_WYL;
--2 往备份表1里 插入 ac02中险种为110的数据
INSERT INTO AC02_WYL
SELECT *
FROM AC02
WHERE AAB001 = PI_AAB001
AND AAE140 = '';
--3 以备份表1养老 为 参照,往备份表2中插如110数据,是用来生成 510 险种的
INSERT INTO AC02_WYL_2
SELECT * FROM AC02_WYL WHERE AAE140 = '';
--4 以备份表2 中的 110为参照,更新为 510险种
UPDATE AC02_WYL_2
SET AAE140 = '', AAE201 = 0, CAC014 = 201509
WHERE AAB001 = PI_AAB001
AND AAE140 = '';
--5 以备份表1的养老 为 参照,往备份表2中插如110数据,是用来生成 410 险种的 同步骤3
INSERT INTO AC02_WYL_2
SELECT * FROM AC02_WYL WHERE AAE140 = '';
--6 以备份表2 中的 110为参照,更新为 410险种 同步骤4
UPDATE AC02_WYL_2
SET AAE140 = '', AAE201 = 0, CAC014 = 201509
WHERE AAB001 = PI_AAB001
AND AAE140 = '';
--7循环 ,主要是修改 aaz159,
--调用 procedure UPDATE_AC02_AAE140_WYL_xh
UPDATE_AC02_AAE140_WYL_XH(pi_aab001);
END;

UPDATE_AC02_AAE140_WYL_XH:

 CREATE OR REPLACE PROCEDURE UPDATE_AC02_AAE140_WYL_XH(PI_AAB001 VARCHAR2) IS
V_AAZ159 NUMBER(20);
CURSOR C_AC02_WYL IS
SELECT * FROM AC02_WYL_2 WHERE AAB001 = PI_AAB001;
BEGIN
FOR V_C_AC02_WYL IN C_AC02_WYL LOOP
SELECT SEQ_BXGX_AAZ159.NEXTVAL INTO V_AAZ159 FROM DUAL;
UPDATE AC02_WYL_2 SET AAZ159 = V_AAZ159;
END LOOP;
END;

最后导入到ac02_wyl_2的数据的aaz159竟然都是同一个值。应该是loop的时候的某个步骤弄错了。

第二个过程改后就没问题了,改后的如下:

 CREATE OR REPLACE PROCEDURE UPDATE_AC02_AAE140_WYL_XH(PI_AAB001 VARCHAR2) IS
V_AAZ159 NUMBER(20);
CURSOR C_AC02_WYL IS
SELECT * FROM AC02_WYL_2 WHERE AAB001 = PI_AAB001;
BEGIN
FOR V_C_AC02_WYL IN C_AC02_WYL LOOP
SELECT SEQ_BXGX_AAZ159.NEXTVAL INTO V_AAZ159 FROM DUAL;
UPDATE AC02_WYL_2
SET AAZ159 = V_AAZ159
WHERE AAZ159 = V_C_AC02_WYL.AAZ159
AND AAB001 = PI_AAB001;
END LOOP;
END;

之前错误的数据导致aaz159都是用一个号,

ac02_wyl_2的具体数据如下图:

附ac02的建表sql:

 create table AC02
(
aaz159 NUMBER(20) not null,
bae001 VARCHAR2(14) not null,
aab001 NUMBER(20),
aac001 NUMBER(20) not null,
aae140 VARCHAR2(6) not null,
aac013 VARCHAR2(6),
cac013 VARCHAR2(6),
aaa095 VARCHAR2(6) not null,
aac008 VARCHAR2(6) not null,
aac049 NUMBER(6) not null,
cac014 NUMBER(8),
aae201 NUMBER(4) not null,
aaz099 NUMBER(20),
aac048 NUMBER(6)
)

Oracle 游标疑问的更多相关文章

  1. Oracle 游标示例,带异常处理

    Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...

  2. Oracle游标带参数

    Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...

  3. Oracle 游标使用(转)

    这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...

  4. Oracle 游标使用全解(转)

    转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...

  5. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  6. dapper支持oracle游标

    dapper支持oracle游标 Dapper是一个轻型的ORM类.它有啥优点.缺点相信很多朋友都知道了,园里也有很多朋友都有相关介绍,这里就不多废话. 如果玩过Oracle都知道,存储过程基本都是通 ...

  7. Oracle游标的使用示例

    此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...

  8. Oracle游标介绍

    Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...

  9. Oracle游标使用

    Oracle游标介绍: --声明游标 CURSOR cursor_name IS select_statement --For 循环游标 --()定义游标 --()定义游标变量 --()使用for循环 ...

随机推荐

  1. DropDownList控件学习

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. [HDU 3336]Count the String[kmp][DP]

    题意: 求一个字符串的所有前缀串的匹配次数之和. 思路: 首先仔细思考: 前缀串匹配. n个位置, 以每一个位置为结尾, 就可以得到对应的一个前缀串. 对于一个前缀串, 我们需要计算它的匹配次数. k ...

  3. hdoj 1874 畅通工程续(单源最短路+dijkstra)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 思路分析:该问题给定一个无向图.起始点和终点,要求求出从起始点到终点的最短距离: 使用Dijks ...

  4. Kapit控件方法笔记

    r.kapit.visualizer.renderers.DefaultItemRenderer //整个节点添加click处理函数对象类型 fr.kapit.visualizer.controls. ...

  5. Node.cluster

    nodejs是一个单进程单线程的引擎,只能利用到单个cpu进行计算,面对当今服务器性能的提高,cpu的利用率显然对node应有的性能大打折扣,面对这个问题,cluster应运而生. cluster介绍 ...

  6. jdbc操作步骤和preparedStatment相比Statment的好处

    java操纵数据库封装了一组API,通过这组API可以透明的操作各种数据库,一般来讲,操纵数据库的步骤是: 一. try{ 1.加载数据库驱动 Class.forName("数据库驱动类&q ...

  7. hdu1711(终于搞懂了KMP算法了。。)

    题意:给你两个长度分别为n(1 <= N <= 1000000)和m(1 <= M <= 10000)的序列a[]和b[],求b[]序列在a[]序列中出现的首位置.如果没有请输 ...

  8. Maven模块聚合与继承

    聚合 假如有account-email和account-persist两个模块,我们想要一次构建这两个项目,这时须要用到聚合. 聚合模块 package值必须为pom 必须有元素modules mod ...

  9. 解决shell脚本中 echo 怎么写入换行到文件

    測试环境:ubuntu12.04 LTS版本号 echo >> file.txt就可以, 这样的方法对于脚本开头是bash和sh效果都一样, 而echo -e >> file. ...

  10. Port 8081 already in use, packager is either not running or not running correctly

    运行 react_native 时发生这个错误,解决办法 关掉端口8081对应的进程 1.打开终端,输入命令:lsof -i:8081 2.此时提示: COMMAND   PID    USER   ...