Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wstaw ciąg testowy BLOB większy niż 2000 lub 4000 bajtów

Na początek musisz zrozumieć, czym są LOB. Są to „duże dane”, prawdopodobnie większe niż jakiekolwiek inne typy danych w Oracle. Są jak zwykłe pliki w systemie plików. Aby pisać do pliku w systemie plików, musisz

  1. otwórz plik do zapisu
  2. Obetnij plik, jeśli chcesz zacząć wypełniać go od zera
  3. odczytaj swoje dane źródłowe porcjami w pętli
  4. dołącz swoje fragmenty danych do pliku w tej samej pętli, jeden po drugim
  5. zamknij plik

Mniej więcej to samo dotyczy obiektów LOB. W Twojej tabeli kolumna LOB (CLOB/BLOB/NCLOB) jest tylko wskaźnikiem/odniesieniem do innego miejsca na dysku, w którym znajdują się rzeczywiste dane. W standardowych terminach Oracle wskaźnik nazywa się „lokalizatorem LOB”. Musisz

  1. otwórz/zainicjuj lokalizator LOB
  2. skróć zawartość LOB, jeśli chcesz zacząć wypełniać ją od zera
  3. dołącz swoje fragmenty danych do zawartości LOB w pętli, jeden po drugim
  4. zamknij lokalizator LOB

W PL/SQL może to wyglądać tak:

-- create table blob_test(id number, b blob);

declare 
  v_b blob; 
  aaa raw(32767);
  longLine varchar2(32767);
begin 
  longLine :=  LPAD('aaaa', 32767,'x');
  aaa := UTL_RAW.CAST_TO_RAW(longLine);
  insert into blob_test values(1,empty_blob()) returning b into v_b;
  dbms_lob.open(v_b,dbms_lob.lob_readwrite);
  dbms_lob.writeappend(v_b,UTL_RAW.LENGTH (aaa) ,aaa);
  dbms_lob.close(LOB_LOC=>v_b);
  commit;
end;

Wyjaśnienie:

  1. zainicjuj lokalizator LOB =insert into blob_test values(1,empty_blob()) returning b into v_b;
  2. otwórz lokalizator LOB do zapisu =dbms_lob.open(v_b,dbms_lob.lob_readwrite);
  3. Obetnij zawartość LOB, jeśli chcesz zacząć wypełniać ją od zera... Jest to wykonywane przez empty_blob() wywołanie w insert .
  4. dołącz swoje fragmenty danych do zawartości LOB w pętli, jeden po drugim =tutaj tylko jedna iteracja dbms_lob.writeappend() , dołączając tylko jeden fragment aaa długości utl_raw.length(aaa) (maksymalnie 32767) do LOB v_b
  5. zamknij lokalizator LOB =dbms_lob.close(LOB_LOC=>v_b);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Importowanie z sprawdzania poprawności bazy danych Oracle

  2. Dynamiczny kursor Oracle

  3. Zaktualizuj kolumny o wartości Null

  4. Tabela kalendarza w SQL

  5. Rozpoczęcie blogowania dla HTML5 i CSS3