Menyalin Data dari File ke CLOB di Oracle
Prosedur copy_file_data_to_clob() berikut menunjukkan cara membaca teks dari file dan
menyimpannya dalam CLOB:
CREATE PROCEDURE copy_file_data_to_clob(
p_clob_id INTEGER,
p_directory VARCHAR2,
p_file_name VARCHAR2
) AS
v_file UTL_FILE.FILE_TYPE;
v_chars_read INTEGER;
v_dest_clob CLOB;
v_amount INTEGER :=32767;
v_char_buffer VARCHAR2(3276767 );
BEGIN
-- masukkan CLOB kosong
INSERT INTO clob_content(
id, clob_column
) VALUES (
p_clob_id, EMPTY_CLOB()
);
-- dapatkan LOB locator dari CLOB
SELECT clob_column
INTO v_dest_clob
FROM clob_content
WHERE id =p_clob_id
UNTUK UPDATE;
-- buka file untuk membaca teks (hingga v_jumlah karakter per baris)
v_file :=UTL_FILE.FOPEN(p_directory, p_file_name, 'r', v_amount);
-- copy data dari file ke v_dest_clob satu baris pada satu waktu
LOOP
BEGIN
-- baca satu baris dari file ke v_char_buffer;
-- G ET_LINE() tidak menyalin karakter baris baru ke
-- v_char_buffer
UTL_FILE.GET_LINE(v_file, v_char_buffer);
v_chars_read :=LENGTH(v_char_buffer);
-- tambahkan baris ke v_dest_clob
DBMS_LOB.WRITEAPPEND(v_dest_clob, v_chars_read, v_char_buffer);
-- tambahkan baris baru ke v_dest_clob karena v_char_buffer;
-- nilai ASCII untuk baris baru adalah 10, jadi CHR(10 ) mengembalikan baris baru
DBMS_LOB.WRITEAPPEND(v_dest_clob, 1, CHR(10));
EXCEPTION
-- ketika tidak ada lagi data dalam file maka keluar
KETIKA NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
-- tutup file
UTL_FILE.FCLOSE(v_file);
DBMS_OUTPUT.PUT_LINE('Salin berhasil selesai.');
END copy_file_data_to_clob;
/
-
periksa tanggal valid yang dideklarasikan di varchar2
-
Kesalahan SQL:tabel atau tampilan ORA-00942 tidak ada
-
Bagaimana cara mendapatkan karyawan dengan manajer mereka
-
Berapa ukuran default input varchar2 ke prosedur tersimpan Oracle, dan dapatkah diubah?
-
Pengguna skema Oracle tidak dapat membuat tabel dalam prosedur