1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| CREATE OR REPLACE PACKAGE sql_blob IS
-- Procédure servant à ajouter un BLOB à notre table.
-- p_id correspond à l'id
-- p_name correspond au nom du fichier à inserer.
PROCEDURE add_blob(p_id NUMBER, p_title VARCHAR2, p_DATE DATE, p_no INTEGER, p_note VARCHAR2,
p_name VARCHAR2, p_lastChange VARCHAR2, p_lasDate DATE,
DAMREPAIR INTEGER, DAMHISTO INTEGER,DAMWRESP INTEGER,TD_HI_METHOD INTEGER,
TEARDOWN INTEGER,TESTID INTEGER,DAMAGEID INTEGER,FACILITY1 INTEGER,
FACILITY2 INTEGER,FACILITY3 INTEGER);
END sql_blob;
/
CREATE OR REPLACE PACKAGE BODY sql_blob IS
PROCEDURE add_blob(p_id NUMBER, p_title VARCHAR2, p_DATE DATE, p_no INTEGER, p_note VARCHAR2,
p_name VARCHAR2, p_lastChange VARCHAR2, p_lasDate DATE,
DAMREPAIR INTEGER, DAMHISTO INTEGER,DAMWRESP INTEGER,TD_HI_METHOD INTEGER,
TEARDOWN INTEGER,TESTID INTEGER,DAMAGEID INTEGER,FACILITY1 INTEGER,
FACILITY2 INTEGER,FACILITY3 INTEGER) IS
v_blob BLOB;
v_bfile BFILE;
BEGIN
-- On insére la ligne avec un blob vide dont on récupère le pointeur
INSERT INTO T_PICTURE
VALUES
(p_id, p_title, p_DATE, p_no, p_note, empty_blob(), p_lastChange, p_lastDate, DAMREPAIR,
DAMHISTO,DAMWRESP,TD_HI_METHOD,TEARDOWN,TESTID,DAMAGEID,FACILITY1,FACILITY2,FACILITY3)
RETURNING image INTO v_blob;
-- On déclare un pointeur vers notre fichier
v_bfile := bfilename(directory => 'PICTURES', filename => p_name);
-- On ouvre ce fichier
dbms_lob.fileopen(v_bfile);
-- On rempli l'emplacement du BLOB vide dans la table avec le contenu de notre fichier
dbms_lob.loadfromfile(v_blob, v_bfile, dbms_lob.getlength(v_bfile));
-- On ferme le fichier
dbms_lob.fileclose(v_bfile);
END;
END sql_blob;
/ |
Partager