L'Informatique
HTML |  Javascript |  DOM |  PHP |  PHP-MySql |  Sessions en PHP |  JSP |  TomCat |  ASP
Java |  C |  C# | 
SQL |  Oracle |  PL/SQL |  les index |  Données multimédia : les LOBs |  Intermedia Text |  projet ORDVideo & Java
BMP |  PBM |  PGM |  PPM | 
UML |  Diagramme Use Case |  Diagramme de classes | 
Liens informatique |  Autres Liens | 

Recherche personnalisée

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.



oracle clob blob lob


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')
);



Romain C