Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да извикате REPLACE с CLOB (без да надвишавате 32K)

Ето груба първа чернова за функция, която ще свърши работата с определени ограничения, все още не е много добре тествана:

function replace_with_clob
  (i_source in clob
  ,i_search in varchar2
  ,i_replace in clob
  ) return clob is
  l_pos pls_integer;
begin
  l_pos := instr(i_source, i_search);
  if l_pos > 0 then
    return substr(i_source, 1, l_pos-1)
        || i_replace
        || substr(i_source, l_pos+length(i_search));
  end if;
  return i_source;
end replace_with_clob;

Той прави само една замяна на първия екземпляр на думата за търсене.

declare
  v2 varchar2(32767);
  cl_small clob;
  cl_big clob;
  cl_big2 clob;
begin
  v2 := rpad('x', 32767, 'x');
  dbms_output.put_line('v2:' || length(v2));
  cl_small := v2;
  dbms_output.put_line('cl_small:' || length(cl_small));
  cl_big := v2 || 'y' || v2;
  dbms_output.put_line('cl_big[1]:' || length(cl_big));
  cl_big2 := replace(cl_big, 'y', cl_small);
  dbms_output.put_line('cl_big[2]:' || length(cl_big2));
  cl_big2 := replace_with_clob(cl_big, 'y', cl_big); 
  dbms_output.put_line('cl_big[3]:' || length(cl_big2));
end;
/

v2:32767
cl_small:32767
cl_big[1]:65535
cl_big[2]:98301
cl_big[3]:131069


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Форматиране на колона за дата в javaFX TableView за данни, извлечени от Oracle DB

  2. Как да премахнете странна таблица с име BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0 от база данни на oracle?

  3. Четене на cob ред по ред с pl\sql

  4. Как мога да използвам колекция в израз на Oracle SQL

  5. ORA-01537. искам да потърся къде е включен файлът