Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách gọi REPLACE với CLOB (không vượt quá 32K)

Đây là bản nháp sơ bộ đầu tiên cho một chức năng sẽ thực hiện công việc với một số hạn chế nhất định, nó vẫn chưa được thử nghiệm tốt:

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;

Nó chỉ thực hiện một thay thế duy nhất trên trường hợp đầu tiên của cụm từ tìm kiếm.

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. cách xuất dữ liệu từ bảng nhật ký sang nội dung email trong oracle

  2. Làm cách nào để xác định giá trị chuỗi của kiểu dữ liệu Oracle bằng mã của nó?

  3. Sự khác biệt về PL / SQL API giữa Oracle Express Edition (XE) và Standard Edition (SE) là gì?

  4. Thực thi ngay lập tức với loại không phải Sql

  5. Chi phí trong bộ nhớ của Oracle