Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Membaca gumpalan baris demi baris dengan pl\sql

Berikut adalah bagian dari kode yang berfungsi. Saya sarankan Anda menggunakan kursor eksplisit daripada kursor implisit (UNTUK i IN (pilih...)), untuk tujuan kinerja.

Pertama di sini adalah skrip untuk membuat testcase.

create table test (c clob);

insert into test (c) values (
'azertyuiop
qsdfghjklm
wxcvbn
');

Lalu ini script untuk membaca baris demi baris Clob :

/* Formatted on 28/08/2012 14:16:52 (QP5 v5.115.810.9015) */
declare
    nStartIndex number := 1;
    nEndIndex number := 1;
    nLineIndex number := 0;
    vLine varchar2(2000);

    cursor c_clob is
    select c from test;

    c clob;
    -------------------------------
    procedure printout
       (p_clob in out nocopy clob) is
      offset number := 1;
      amount number := 32767;
      len    number := dbms_lob.getlength(p_clob);
      lc_buffer varchar2(32767);
      i pls_integer := 1;
    begin
      if ( dbms_lob.isopen(p_clob) != 1 ) then
        dbms_lob.open(p_clob, 0);
      end if;
      amount := instr(p_clob, chr(10), offset);
      while ( offset < len )
      loop
        dbms_lob.read(p_clob, amount, offset, lc_buffer);
        dbms_output.put_line('Line #'||i||':'||lc_buffer);
       offset := offset + amount;
       i := i + 1;
      end loop; 
          if ( dbms_lob.isopen(p_clob) = 1 ) then
        dbms_lob.close(p_clob);
      end if; 
    exception
      when others then
         dbms_output.put_line('Error : '||sqlerrm);
    end printout;
    ---------------------------
begin
    dbms_output.put_line('-----------');
    open c_clob;
    loop
       fetch c_clob into c;
       exit when c_clob%notfound;
       printout(c);
    end loop;
    close c_clob;
end;

Variabel 'jumlah' digunakan untuk mendeteksi posisi akhir baris. Hati-hati, dalam beberapa kasus akhir baris adalah CHR(10)||CHR(13) (CR + LF), dan dalam beberapa kasus lain hanya CHR(10).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi Desimal ke Heksadesimal menggunakan TO_CHAR() di Oracle

  2. Mengimpor File di Oracle Apex Menggunakan wwv_flow_files

  3. Bagaimana cara melihat tipe variabel dalam PL/SQL?

  4. Kinerja Oracle &kuis penyetelan

  5. Pivot dinamis di Oracle sql