pythontr.com
ORA-22828 hatası, CLOB olarak tanımlanan bir tablo alanında, REPLACE, REGEXP_REPLACE gibi standart oracle fonksiyonları kullanarak 32K'dan büyük bir stringi fonksiyon üzerinde değiştirmeye çalıştığınızda olur.
Çözüm aslında basittir REPLACE fonksiyonunu kısım kısım kullanarak bu sorunun üstesinden gelebiliriz.
CREATE OR REPLACE FUNCTION replace_clob ( in_source IN CLOB, in_search IN VARCHAR2, in_replace IN CLOB ) RETURN CLOB IS l_pos pls_integer; BEGIN l_pos := instr(in_source, in_search); IF l_pos > 0 THEN RETURN substr(in_source, 1, l_pos-1) || in_replace || substr(in_source, l_pos+LENGTH(in_search)); END IF; RETURN in_source; END replace_clob; /
NEW_BODY := replace_clob(NEW_BODY, '[#DETAY#]', DETAY);
Yorumlar