husonet | Tarih: 18.10.2017
ORA-22828: input pattern or replacement parameters exceed 32K size limit
Bu kısa makale ORA-22828 hatasının nasıl çözüleceğini gösterir.
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;
/
Örnek Kullanım
NEW_BODY := replace_clob(NEW_BODY, '[#DETAY#]', DETAY);