DECLARE
-- 修正用プログラム
DECLARE
CURSOR c_adv_fee_detail IS
SELECT adv_fee.fee_mgmt_num,
adv_fee.fee_mgmt_eda,
adv_fee.receipt_num,
adv_fee.his,
adv_fee.ksai_sha_code,
adv_fee.teisei_kubun,
adv_fee.adv_baitai_bunrui_code,
adv_fee.moko_kind,
adv_fee.adv_kind_mcode,
adv_fee.adv_sha_name,
adv_fee.dan_kansan_space,
adv_fee.gross_fee,
adv_fee.input_per_code
FROM tb_adv_fee_detail adv_fee
WHERE
--料金情報(基本)に存在する(料金管理番号、枝番で結合する)
EXISTS (SELECT 1
FROM tb_fee_info_basic fee
WHERE fee.fee_mgmt_num = adv_fee.fee_mgmt_num
AND fee.fee_mgmt_eda =
'0' || substr(adv_fee.fee_mgmt_eda, 2, 2))
--受付番号、履歴番号と掲載者の条件を追加して、料金情報(基本)に存在しない
AND NOT EXISTS (SELECT 1
FROM tb_fee_info_basic fee
WHERE fee.receipt_num = adv_fee.receipt_num
AND fee.his = adv_fee.his
AND fee.ksai_sha_code = adv_fee.ksai_sha_code
AND fee.fee_mgmt_num = adv_fee.fee_mgmt_num
AND fee.fee_mgmt_eda =
'0' || substr(adv_fee.fee_mgmt_eda, 2, 2))
AND adv_fee.input_per_code = 'IKOU'
/* AND adv_fee.receipt_num = 'W12022000286'
AND adv_fee.his = '002'
AND adv_fee.ksai_sha_code = '1'*/
;
vReceiptNum tb_adv_fee_detail.receipt_num%TYPE;
vHis tb_adv_fee_detail.his%TYPE;
CURSOR c_tafd_1 IS
SELECT *
FROM (SELECT tafd.receipt_num,
tafd.his,
tafd.ksai_sha_code,
tafd.dan_kansan_space,
row_number() over(PARTITION BY tafd.receipt_num, tafd.his, tafd.ksai_sha_code ORDER BY tafd.fee_mgmt_num DESC, tafd.fee_mgmt_eda DESC) rn
FROM tb_adv_fee_detail tafd
WHERE tafd.adv_kind_mcode = '1' --記事下
AND tafd.dan_kansan_space <> 0 --段換算スペース
AND tafd.moko_kind NOT IN ('12', '19') --フリー、仮版
AND tafd.teisei_kubun IN ('2', '3') --黒、訂正なし
AND tafd.input_per_code = 'IKOU'
AND NOT EXISTS
(SELECT 1
FROM tb_tokei_dansu_kanri dan
WHERE dan.receipt_num = tafd.receipt_num
AND dan.his = tafd.his
AND dan.ksai_sha_code = tafd.ksai_sha_code
AND dan.fee_mgmt_num = '************'
AND dan.fee_mgmt_eda = '***'))
WHERE rn = 1;
CURSOR c_tafd_2 IS
SELECT tafd.receipt_num,
tafd.his,
tafd.ksai_sha_code,
tafd.fee_mgmt_num,
tafd.fee_mgmt_eda,
tafd.dan_kansan_space
FROM tb_adv_fee_detail tafd
WHERE ((tafd.adv_kind_mcode = '1' AND tafd.dan_kansan_space <> 0 AND
tafd.moko_kind NOT IN ('12', '19')) OR
(tafd.adv_kind_mcode = '2' AND tafd.dan_kansan_space <> 0))
AND tafd.input_per_code = 'IKOU'
AND NOT EXISTS
(SELECT 1
FROM tb_tokei_dansu_kanri dan
WHERE dan.receipt_num = tafd.receipt_num
AND dan.his = tafd.his
AND dan.ksai_sha_code = tafd.ksai_sha_code
AND dan.fee_mgmt_num = tafd.fee_mgmt_num
AND dan.fee_mgmt_eda = tafd.fee_mgmt_eda);
vErrKey VARCHAR2(1024);
BEGIN
DELETE FROM tb_tokei_dansu_kanri dan
WHERE EXISTS
(SELECT 1
FROM tb_adv_fee_detail adv_fee
WHERE
--料金情報(基本)に存在する(料金管理番号、枝番で結合する)
EXISTS (SELECT 1
FROM tb_fee_info_basic fee
WHERE fee.fee_mgmt_num = adv_fee.fee_mgmt_num
AND fee.fee_mgmt_eda =
'0' || substr(adv_fee.fee_mgmt_eda, 2, 2))
--受付番号、履歴番号と掲載者の条件を追加して、料金情報(基本)に存在しない
AND NOT EXISTS (SELECT 1
FROM tb_fee_info_basic fee
WHERE fee.receipt_num = adv_fee.receipt_num
AND fee.his = adv_fee.his
AND fee.ksai_sha_code = adv_fee.ksai_sha_code
AND fee.fee_mgmt_num = adv_fee.fee_mgmt_num
AND fee.fee_mgmt_eda =
'0' || substr(adv_fee.fee_mgmt_eda, 2, 2))
AND dan.receipt_num = adv_fee.receipt_num
AND dan.his = adv_fee.his
AND dan.ksai_sha_code = adv_fee.ksai_sha_code
AND ((dan.fee_mgmt_num = '************' AND
dan.fee_mgmt_eda = '***') OR
(dan.fee_mgmt_num = adv_fee.fee_mgmt_num AND
dan.fee_mgmt_eda = adv_fee.fee_mgmt_eda))
/* AND adv_fee.receipt_num = 'W12022000286'
AND adv_fee.his = '002'
AND adv_fee.ksai_sha_code = '1'*/
);
FOR c_row IN c_adv_fee_detail
LOOP
BEGIN
vErrKey := c_row.receipt_num || '-' || c_row.his || '-' ||
c_row.ksai_sha_code || '-' || c_row.fee_mgmt_num || '-' ||
c_row.fee_mgmt_eda;
-- 料金情報基本から受付番号と履歴番号を取得
SELECT receipt_num,
his
INTO vReceiptNum,
vHis
FROM tb_fee_info_basic
WHERE fee_mgmt_num = c_row.fee_mgmt_num
AND fee_mgmt_eda = '0' || substr(c_row.fee_mgmt_eda, 2, 2);
-- 広告料金明細を更新
UPDATE tb_adv_fee_detail
SET receipt_num = vReceiptNum,
his = vHis,
update_date_time = SYSDATE,
update_per_code = 'M0013510'
WHERE fee_mgmt_num = c_row.fee_mgmt_num
AND fee_mgmt_eda = c_row.fee_mgmt_eda;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('1:' || vErrKey || ':' ||
SQLERRM(SQLCODE));
END;
END LOOP;
FOR c_row1 IN c_tafd_1
LOOP
BEGIN
vErrKey := c_row1.receipt_num || '-' || c_row1.his || '-' ||
c_row1.ksai_sha_code || '-' || '************' || '-' ||
'***';
INSERT /*+APPEND*/
INTO tb_tokei_dansu_kanri
(receipt_num,
his,
ksai_sha_code,
fee_mgmt_num,
fee_mgmt_eda,
tokei_dansu,
input_date_time,
input_per_code,
update_date_time,
update_per_code,
update_count,
del_flg,
del_date_time,
del_per_code)
VALUES
(c_row1.receipt_num,
c_row1.his,
c_row1.ksai_sha_code,
'************',
'***',
c_row1.dan_kansan_space,
SYSDATE,
'IKOU',
SYSDATE,
'M0013510',
0,
'0',
NULL,
NULL);
UPDATE tb_moko_info_ksai_sha_betsu
SET tokei_dansu = c_row1.dan_kansan_space
WHERE receipt_num = c_row1.receipt_num
AND his = c_row1.his
AND ksai_sha_code = c_row1.ksai_sha_code;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('2:' || vErrKey || ':' ||
SQLERRM(SQLCODE));
END;
END LOOP;
FOR c_row2 IN c_tafd_2
LOOP
BEGIN
vErrKey := c_row2.receipt_num || '-' || c_row2.his || '-' ||
c_row2.ksai_sha_code || '-' || c_row2.fee_mgmt_num || '-' ||
c_row2.fee_mgmt_eda;
INSERT /*+APPEND*/
INTO tb_tokei_dansu_kanri
(receipt_num,
his,
ksai_sha_code,
fee_mgmt_num,
fee_mgmt_eda,
tokei_dansu,
input_date_time,
input_per_code,
update_date_time,
update_per_code,
update_count,
del_flg,
del_date_time,
del_per_code)
VALUES
(c_row2.receipt_num,
c_row2.his,
c_row2.ksai_sha_code,
c_row2.fee_mgmt_num,
c_row2.fee_mgmt_eda,
c_row2.dan_kansan_space,
SYSDATE,
'IKOU',
SYSDATE,
'M0013510',
0,
'0',
NULL,
NULL);
UPDATE tb_moko_info_ksai_sha_betsu
SET tokei_dansu = c_row2.dan_kansan_space
WHERE receipt_num = c_row2.receipt_num
AND his = c_row2.his
AND ksai_sha_code = c_row2.ksai_sha_code;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('3:' || vErrKey || ':' ||
SQLERRM(SQLCODE));
END;
END LOOP;
END;
DECLARE的更多相关文章
- mysql substring函数截取值后赋给一个declare变量
今天写的一个mysql存储过程涉及到对一个传入参数的字符串截取,然后需要判断截取字符串进行一系列操作,最开始用select subtring() into 这样的方法将截取值赋于declare变量直 ...
- 关于Django 错误 doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS
记录一下 报错 doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS\ 这个问题出现没 ...
- rabbitmq method之queue.declare
queue.declare即申请队列,首先对队列名作处理,若未指定队列名则随机生成一个,然后查询数据库队列是否已经创建,若创建完成则会申请队列返回 handle_method(#'queue.decl ...
- LINUX:read、array、declare
read:要读取来自键盘输入的变量 使用规则: read [-pt] variale 选项与参数: -p:后面接提示字符: -t:后面接等待的“秒数”: 如果read之后不加任何参数,直接加上变量名称 ...
- Ubuntu 下使用declare的问题
Ubuntu在shell的执行上用户root和普通用户是不一样的. 使用vi /etc/passwd 我们就可以看到在用户的最后一行也就是定义shell执行位置的地方root的位置是/bin/bash ...
- dojo分析之declare接口
欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=57 declare接口是dojo定义类系统的关键函数, 类系统就是抽象,封装,继承.do ...
- 关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
编写实体类并且继承序列化接口时候,实体类会有警告,要生成一个静态的serialVersionUID. 上网搜了一下资料,现通俗解释一下: 点击前2个选项,会生成: private static fin ...
- PHP declare(ticks=N); 的作用
一般用法是 declare(ticks=N);拿declare(ticks=1)来说,这句主要作用有两种: 1.Zend引擎每执行1条低级语句就去执行一次 register_tick_function ...
- (转)create table #temptable 临时表 和 declare @bianliang table ()表变量
在开发过程中,经常会遇到使用表变量和本地临时表的情况.下面是对二者的一个介绍: 1. 为什么要使用表变量 表变量是从2000开始引入的,微软认为与本地临时表相比,表变量具有如下优点: a.与其他变量 ...
- 有时候为了方便sql语句的对比和查询,我们可以使用declare来定义变量 上下篇的问题
--定义一些参数 declare @nodeId int,@ekid int ,@ecid int,@eid int,@pid int --列表 SELECT * FROM ( SELECT *,RO ...
随机推荐
- java.lang.IllegalStateException: 1 matchers expected, 5 recorded.
这是一个很神奇的错误. 常规的出错是因为在mock方法里,其中某一个或者几个参数使用了EasyMock.anyxx(),而其他的使用了具体的值. java.lang.IllegalStateExcep ...
- 模板方法(Template Method)(父类声明算法骨架,子类具体不同实现)
在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...
- Div+CSS常见错误总结
CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用cs ...
- 为什么DW的可视化下看到的效果与浏览器的效果有所区别?
可视区不是调用外面浏览器,Dreamweav 可视化区是为用户编辑而设计. 支持最基本的 HTML 与 CSS ,对 CSS 而言,我写入样式时如果你使用最基本的样式时它显示与你浏览器中看的效果相差不 ...
- 阿里云王广芳:5G时代,我们需要怎样的边缘计算?
7月24日阿里云峰会开发者大会的IT基础设施云化专场中,阿里云边缘计算高级技术专家王广芳进行了边缘节点服务重大升级发布,同时与现场观众一同探讨了5G时代边缘计算的思考与技术实践. 5G时代,我们需要怎 ...
- Hdu 1007 最近点对
题目链接 Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Directx11教程(44) alpha blend(1)
原文:Directx11教程(44) alpha blend(1) 我们知道,D3D11中按Frame来渲染物体,每个Frame中又可能包含若干个primitive,如下面的示意图所示: ...
- DHCP服务器安装、测试
df:disk free df -h 查询空余磁盘 find / -name TechSungWeiXin 查询TechSungWeiXin的位置 find / -name YunyueWeixin_ ...
- redis 如何查看版本
./redis-cli -h 127.0.0.1 info | grep 'redis_version' redis-server -v
- 在哈尔滨的寒风中EOJ 3461【组合数学】
http://acm.ecnu.edu.cn/problem/3461/ 还是能力不够,不能看出来棋盘足够大时,马是可以到达任何位置的.还是直接看题解怎么说的吧:(http://acm.ecnu.ed ...