使用存储过程读取源表数据到目标表出现额外的数据

wildwolv 2018-03-06 09:30:56
这是我存储过程的写法:
create or replace procedure p_cdc_test
is
begin
for v_cur_cdc1 in (select * from cdc_test1 )
loop
IF v_cur_cdc1.operation$='I' THEN
insert into test_target(id,name,mark,startdate,enddate)
select t1.id,t1.name,t1.mark,t1.commit_timestamp$,to_date('9999-12-31','YYYY-MM-DD') from cdc_test1 t1 where t1.id=v_cur_cdc1.id;
elsIF v_cur_cdc1.operation$='D' THEN
update test_target t2
set t2.enddate=v_cur_cdc1.commit_timestamp$
where t2.id=v_cur_cdc1.id
and t2.enddate=to_date('9999-12-31','YYYY-MM-DD');
elsIF
v_cur_cdc1.operation$='UN' THEN
update test_target t3
set t3.enddate=v_cur_cdc1.commit_timestamp$
where t3.id=v_cur_cdc1.id
and t3.enddate=to_date('9999-12-31','YYYY-MM-DD');
insert into test_target(id,name,mark,startdate,enddate)
select t4.id,t4.name,t4.mark,t4.commit_timestamp$,to_date('9999-12-31','YYYY-MM-DD')
from cdc_test1 t4 where t4.id=v_cur_cdc1.id;
end if;
end loop;
commit;
end;


源表cdc_test1的数据如下:

执行存储过程后,目标表test_target的数据如下:

照理说目标表应该是4条记录,为什么会有9条记录?
...全文
635 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wildwolv 2018-03-14
  • 打赏
  • 举报
回复
执行存储过程之前查了test_target表的,里面数据是空的。我又清了数据试了一下,不是目标表有数据的问题,应该是sql有问题,这sql为什么会有问题呢?怎么也找不出问题在哪。。求大神指教!
jdsnhan 2018-03-08
  • 打赏
  • 举报
回复
清了数据,再来一次,就知道是语句的问题还是目标表是否有数据了
  • 打赏
  • 举报
回复
可能开始这test_target张表里面有数据

17,081

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧