Oracle LOB, Oracle CLOB, Oracle BLOB
Les LOBs sont de grands objets (image, son, vidéo) qui sont stockées avec
Oracle. Les types principaux qui existent dans
Oracle sont les suivants:
.
BLOB enregistré sous forme binaire 4 Ko dans la base pour le lien, et jusqu'à 4 Go pour le fichier, en externe.
.
CLOB enregistré sous forme de texte (caractères), de taille maximale 4 Go
.
BFILE enregistré sous forme binaire qui référence un fichier jusqu'à 4 Go dans un répertoire spécifié pour
Oracle.
Oracle BLOB et Oracle CLOB
Les données de types BLOB (images, audio, vidéo) et CLOB (texte) sont enregistrées dans la base de données.
CREATE TABLE rapport (
numero INTEGER PRIMARY KEY,
texte CLOB,
illustration BLOB,
fichierJoint BFILE
);
CREATE DIRECTORY pImages AS 'c:\mesimages';
-- insertion
INSERT INTO rapport VALUES (
1,
'texte du rapport jusqu''à 4 Go',
EMPTY_BLOB(),
BFILENAME('pImages','cours.pdf')
);
-- modification
UPDATE rapport
SET fichierJoint = BFILENAME('pImages','autre.pdf');
-> les LOBs sont gérés avec le package DBMS_LOB dans des requêtes PL/SQL, voir ci-dessous.
Pour traiter des données de type LOB, il faut créer des procédures PL/SQL :
-- procédure qui ouvre l'illustration du rapport numéro 3 :
CREATE OR REPLACE PROCEDURE lire3 IS
Img BLOB;
Amount INTEGER = 32767;
Position INTEGER = 1;
Buffer RAW (32767);
BEGIN
SELECT illustration INTO Img FROM lire3 WHERE numero = 3;
DBMS_LOB.OPEN(Img, DBMS_LOB.LOB_READONLY); --à vérifier
DBMS_LOB.READ(Img,Amount,Position,Buffer);
DBMS_LOB.CLOSE();
END
BFILE
Les fichiers sont stockés en externe, et il faut préciser le répertoire dans lequel ils seront placés en créant un objet de type DIRECTORY.
CREATE TABLE photos (
numero INTEGER PRIMARY KEY,
photo BFILE
);
CREATE DIRECTORY "IMAGES" AS "c:\photos";
-- pour pouvoir écrire et lire dans ce répertoire, il faut définir les droits en mode administrateur :
GRANT READ ON DIRECTORY IMAGES TO toto;
INSERT INTO photos VALUES (
1,
BFILENAME('IMAGES','exemple.jpg')
);