makaleler / Veritabanı / ORA-22828: input pattern or replacement parameters exceed 32K size limit

ORA-22828: input pattern or replacement parameters exceed 32K size limit

18.10.2017 14:52:49

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);
yazar husonet

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda