Обновить столбец Clob в Oracle

У меня есть таблица с именем ABC, в которой есть данные CLOB. Я хочу обновить столбец, чтобы вставить строку в определенную позицию в этом столбце Clob.

Строка для вставки:

<nv_pair>
<name identifier="XYZ"></name>
<value identifier="XYZ"></value>
</nv_pair>

Данные Clob:

<form> <nv_pair></nv_pair> <nv_pair></nv_pair><nv_pair></nv_pair><nv_pair></nv_pair></form>

Позиция для вставки: Незадолго до </form>


person Aditya    schedule 22.08.2011    source источник


Ответы (2)


Взгляните на пакет DBMS_LOB.

Кстати, возможно, стоит изучить возможность отказа от CLOB и использования встроенных в Oracle возможностей XML (хотя я с этим не знаком).

person Branko Dimitrijevic    schedule 22.08.2011
comment
+1 для предложения типа xml, хотя возможность (и целесообразность) переключения будет зависеть от версии базы данных. - person Wivani; 23.08.2011

В зависимости от того, какая у вас версия Oracle, вы можете использовать функцию regexp_replace:

update abc
set clob_val =
  regexp_replace(clob_val,
                 '^(.+)(</form>)',
                 '\1<nv_pair><name identifier="XYZ"></name><value identifier="XYZ">/value>/nv_pair>\2')
where ...
person furman87    schedule 23.08.2011