Layer 06

Caricare un file in un campo LOB direttamente da disco

CREATE TABLE provaBlob (fileName VARCHAR2(15),file BLOB)   A questo punto possiamo creare un’oggetto “Directory”, che rappresenta il ponte tra il database e la directory fisica: CREATE OR REPLACE DIRECTORY myDirectory AS 'C:MyFiles'   Bene adesso creiamo la procedura vera e propria che poi andremo a lanciare per il caricamento del file: CREATE OR REPLACE PROCEDURE loadFiles(nomeFile IN VARCHAR2) IS bl BLOB; bf BFILE; bs INTEGER; BEGIN INSERT INTO provaBlob VALUES(nomefile, empty_blob()); bf := bfilename('myDirectory', nomeFile); DBMS_LOB.FILEOPEN(bf); bs := DBMS_LOB.GETLENGTH(bf); SELECT file INTO bl FROM provaBlob WHERE fileName = nomefile; DBMS_LOB.LOADFROMFILE(bl, bf, bs); DBMS_LOB.FILECLOSE(bf); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE||' '||SQLERRM); END; / SHOW ERRORS   Ora per lanciare la procedura basta eseguire il seguente comando: EXEC loadFiles('documento.doc');]]>