BFILENAME |
Nom de fichier binaire |
|---|---|
| Oracle Database SQL | Oracle 8i ou supérieure |
Syntaxe
| bfilename(directory,filename) |
Paramètres
| Nom | Description |
|---|---|
| directory | Ce paramètre permet d'indiquer l'objet de répertoire utilisé comme alias. |
| filename | Ce paramètre permet d'indiquer le nom du fichier sur le serveur de fichier. |
Description
Cette fonction permet de retourner l'emplacement du BFILE dans le fichier binaire LOB.
Remarques
- Crée un pointeur vers un fichier externe de type BFILE : La fonction BFILENAME retourne un objet de type BFILE, c'est-à-dire une référence externe vers un fichier entreposé en dehors de la base de données, mais accessible en lecture. Ce mécanisme permet de lier des fichiers binaires (images, PDF, vidéos) sans les entreposer dans la base elle-même.
- Utilise un objet DIRECTORY déclaré dans la base Oracle : Le paramètre directory fait référence à un objet Oracle de type DIRECTORY, cartographiant un chemin absolu du système de fichiers serveur. Ce répertoire doit avoir été créé au préalable par un administrateur avec CREATE DIRECTORY.
- Le fichier n'est pas géré ni entreposé dans Oracle : Les BFILE pointent vers des fichiers en lecture seulement entreposés à l'extérieur de la base. Oracle ne gère pas leur contenu, leur taille ni leur disponibilité, ce qui signifie que des erreurs peuvent survenir si le fichier est supprimé ou déplacé côté système.
- Requiert des privilèges d'accès spécifiques : L'utilisateur SQL exécutant BFILENAME ou accédant à un BFILE doit avoir reçu le privilège READ sur l'objet DIRECTORY, et le serveur Oracle doit avoir les droits système pour accéder au chemin physique correspondant.
- Souvent utilisé avec les fonctions LOB comme DBMS_LOB.LOADFROMFILE : Une fois que BFILENAME a créé une référence BFILE, celle-ci peut être utilisée par des procédures PL/SQL comme DBMS_LOB.LOADFROMFILE pour copier le contenu dans un LOB interne (de type BLOB) si une persistance est souhaitée.
- Le BFILE reste un objet externe, non modifiable via SQL : Contrairement aux types LOB internes (BLOB, CLOB), les BFILEs sont non modifiables depuis SQL ou PL/SQL. Ils sont strictement en lecture seule, ce qui garantit l'intégrité des fichiers d'origine mais limite les possibilités de traitement.
- Le chemin du fichier est relatif au répertoire déclaré, pas absolu : Le paramètre filename représente un nom de fichier relatif au chemin défini par l'objet DIRECTORY. Il ne peut pas contenir de sous-dossiers si la plateforme Oracle est configurée pour les interdire.
- Peut être utilisé dans des expressions SQL ou dans des PL/SQL blocs : Bien que BFILENAME retourne un objet, il peut être utilisé directement dans des INSERT, UPDATE ou SELECT, ou stocké dans des colonnes de type BFILE dans des tables, facilitant l'indexation et la gestion de ressources externes.
Exemple
Voici un exemple montrant l'utilisation de cette fonction :
- CREATE DIRECTORY monRepertoire AS '/home/gladir/';
- SELECT BFILENAME('monRepertoire','monimage.jpg') FROM DUAL;
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015