oracle 不存在 lobc值,oracle - 处理ORA-22922:通过DBLink使用CLOBS时,不存在LOB值错误复制表 - 堆栈内存溢出...

我正在尝试跨Oracle中的数据库链接复制7毫米行表。

该表具有几列CLOB类型。 我已经尝试使用INSERT / * + Append * /进行NOLOGGING,但是它仍然太慢了。 我使用BULK COLLECT和FORALL取得了更好的性能,但是不断收到Oracle错误ORA-22922:不存在的LOB值

CREATE OR REPLACE PROCEDURE copy_c AS

TYPE abc_rectype IS RECORD

(a_id NUMBER,

b_id NUMBER,

c_id NUMBER,

case_abc_addl CLOB,

s_comments CLOB,

case_abc CLOB);

TYPE abc_tbltype IS TABLE OF abc_rectype;

l_abc_info abc_tbltype;

CURSOR rmt_cur IS

SELECT cs.a_id,

cs.b_id,

cs.c_id,

cs.case_abc_addl,

cs.s_comments,

cs.case_abc

FROM schema.c_tbl@dblink cs

WHERE (cs.b_id, cs.c_id) IN

(SELECT t.b_id, t.c_id

FROM temp_z t);

l_limit NUMBER := 1000;

BEGIN

-- First get the data into memory

OPEN rmt_cur;

LOOP

BEGIN

FETCH rmt_cur

BULK COLLECT INTO l_abc_info LIMIT l_limit;

-- Now insert these records into a local abcs table

FORALL i IN 1..l_abc_info.count

INSERT INTO z_tbl_temp

(a_id,

b_id,

c_id,

case_abc_addl,

s_comments,

case_abc)

VALUES

(l_abc_info(i).a_id,

l_abc_info(i).b_id,

l_abc_info(i).c_id,

l_abc_info(i).case_abc_addl,

l_abc_info(i).s_comments,

l_abc_info(i).case_abc);

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line(SQLERRM);

END;

COMMIT;

EXIT WHEN l_abc_info.COUNT < l_limit;

END LOOP;

CLOSE rmt_cur;

EXCEPTION

WHEN OTHERS THEN

IF rmt_cur%ISOPEN THEN

CLOSE rmt_cur;

END IF;

dbms_output.put_line(SQLERRM);

END copy_c;

我以为我至少可以用BEGIN-END块捕获该异常,但是过程只是停止了。 谢谢你的帮助!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值