当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
oracle替换clob类型中的一段数据
发布时间:2010/11/3 14:46:17 来源:城市学习网 编辑:ziteng

  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;

  /

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved