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. MSSQL随机数概率测试

    随机概率测试 创建一个表统计create table t_test(ip char(15)) --truncate table t_test; declare @i int ;set @i=0; -- ...

  2. gridview回顾

    第一看asp.net是在做项目之前,感觉收获也很大,第二次看gridview是在做完项目之后对GridView的回顾,这次的感觉是:我需要多想点,知识直到用时方觉少.直入正题吧,看gridview. ...

  3. 加装 ImageMagick 性能更佳!

    1. 下载 Download ImageMagick 以此文件ImageMagick-6.9.1-10-Q16-x64-dll-win进行,第二次开发的研发 2. 安装 Install ImageMa ...

  4. github桌面软件使用教程

    github桌面软件使用教程 首先 要先安装 桌面版官网,或者百度搜github windows下载即可 可以再github网站上直接点击,把代码添加的桌面软件中 也可以再左上角添加项目,比如actu ...

  5. HTML+CSS笔记 CSS进阶

    文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...

  6. SQLITE 多进程查询出错database is locked

    程序比较简单: 父进程查询数据库A表,没有更新操作 子进程同时查询数据库A表,查询出来的内容更新B表. 两个进程都放到while(1)循环中,速度慢的话就是2S执行一次就没有错,执行的速度快的话就会报 ...

  7. 循环-10. 求序列前N项和(15)

    #include<iostream>#include<iomanip>using namespace std;int main(){    double i,n,t,a,b;  ...

  8. Git merge local repository

    I've met this problem for so many times and let me write a blog for solving this problem. First, you ...

  9. MVC-Easy-UI-datagrid-分页-查询

    时间仓促,代码写的乱,莫怪,着影区不用理会(功能之外) <link href="@Url.Content("~/Content/Site.css")" r ...

  10. 宣布发布 Windows Azure ExpressRoute,宣告与 Level 3 建立全新的合作伙伴关系并推出关于其他 Azure 服务令人振奋的更新

     在我们与世界各地的客户和合作伙伴交谈时,总会听到他们说,希望找到一个提供商帮助他们最大限度地发挥内部部署投资的作用并且能够利用云的灵活性.这是我们构建混合云策略和云操作系统愿景的基本原则.本着我 ...