oracle存储过程声明表,Oracle 利用存储过程创建表同步数据

该存储过程执行了数据库表的迁移,首先删除远程数据库的表remote_A,然后创建并填充相同结构的数据。通过游标循环处理,从remote_A中获取记录,并在本地表A中插入,同时使用序列SEQ_TABLE_A为新插入的记录分配ID。迁移完成后,输出迁移的记录数,如果出现异常则回滚事务。
摘要由CSDN通过智能技术生成

CREATE OR REPLACE PROCEDURE TRANSFER_A  AUTHID current_user AS

CUR_ID    NUMBER(4);

PLAN_COUNT NUMBER(4);

BEGIN

EXECUTE IMMEDIATE 'drop TABLE remote_A ';

EXECUTE IMMEDIATE 'CREATE TABLE remote_A AS SELECT * FROM table_A@dblink_A';

PLAN_COUNT := 0;

DECLARE

CURSOR A_CURSOR IS

SELECT ID,NAME,INFO

FROM remote_A T ;

BEGIN

FOR REC IN A_CURSOR  LOOP

SELECT SEQ_TABLE_A.NEXTVAL INTO CUR_ID FROM DUAL;

INSERT INTO A  (ID,NAME,INFO)

SELECT CUR_ID,NAME,INFO   FROM DUAL;

PLAN_COUNT := PLAN_COUNT + 1;

END LOOP;

END;

COMMIT;

DBMS_OUTPUT.PUT_LINE('迁移完成,共迁移' || PLAN_COUNT || '条记录');

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

DBMS_OUTPUT.PUT_LINE('迁移失败');

END TRANSFER_A ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值