oracle按格式替换,如何用oracle替换clob类型中的一段数据? 爱问知识人

CREATE OR REPLACE FUNCTION dfn_clobReplace

( p_clob          IN CLOB,

p_what          IN VARCHAR2,

p_with          IN VARCHAR2 ) RETURN CLOB IS

c_whatLen      CONSTANT PLS_INTEGER := LENGTH(p_what);

c_withLen      CONSTANT PLS_INTEGER := LENGTH(p_with);

l_return        CLOB;

l_segment      CLOB;

l_pos          PLS_INTEGER := 1-c_withLen;

l_offset        PLS_INTEGER := 1;

BEGIN

IF p_what IS NOT NULL THEN

WHILE l_offset < DBMS_LOB。

GETLENGTH(p_clob) LOOP

l_segment := DBMS_LOB。SUBSTR(p_clob,32767,l_offset);

LOOP

l_pos := DBMS_LOB。INSTR(l_segment,p_what,l_pos+c_withLen);

EXIT WHEN (NVL(l_pos,0) = 0) OR (l_pos = 32767-c_withLen);

l_segment := TO_CLOB( DBMS_LOB。

SUBSTR(l_segment,l_pos-1)

||p_with

||DBMS_LOB。

SUBSTR(l_segment,32767-c_whatLen-l_pos-c_whatLen+1,l_pos+c_whatLen));

END LOOP;

l_return := l_return||l_segment;

l_offset := l_offset + 32767 - c_whatLen;

END LOOP;

END IF;

RETURN(l_return);

END;。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值