oracle11g同步,oracle11g同库数据同步问题

我写了一个同步数据库的存储过程,缺陷肯定是存在的,问题是在执行批量insert时,出现问题是是不能准确判断是哪个插入操作表时引起的。

create or replace procedure test_wb_t1(fdate     in varchar,

sqlresult out varchar,

oresult   out number) is

vi_result   number(10);

validatemsg varchar2(32);

insertsql   varchar(1000);

selectsql   varchar(100);

tempresult  varchar(30);

tablename   varchar(30);

deletesql   varchar(1000);

cursor syn_table is

select table_name

from user_all_tables

where tablespace_name = 'CAFCS'

and table_name like '%_BASE%';

begin

select count(t_id)

into vi_result

from scott.t_impdatastatus

where status = 1

and to_char(to_date(IMP_EDATE, 'yyyy-mm-dd'), 'yyyy-mm-dd') = fdate;

oresult := vi_result;

validatemsg := '验证数据是否同步完成';

if vi_result <> 2 then

oresult := -1;

dbms_output.put_line('同步未完成');

end if;

insertsql := 'insert into cafc.';

selectsql := 'select * from scott.';

for cursor_result in syn_table loop

begin

tempresult := cursor_result.table_name;

tablename  := substr(tempresult,

0,

INSTR(tempresult, '_BASE', 1, 1) - 1);

insertsql  := 'insert into ' || tempresult ||

' (select * from scott.' || tablename || ')';

dbms_output.put_line(insertsql);

execute immediate insertsql;

end;

end loop;

commit;

sqlresult := tablename;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

oresult := -3;

end test_wb_t1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值