IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Insérer BLOB dans Oracle Express 10g


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Par défaut Insérer BLOB dans Oracle Express 10g
    Bonjour,

    Je rencontre un problème pour insérer un fichier BLOB dans une table créé sous Oracle Express 10g.
    Au départ, j'ai une table qui s'appelle LOGOSUPPORT(IDLOGOSUPPORT NUMBER, IMAGELOGO BLOB, NOM VARCHAR2).
    C'est une table très simple, id de l'identifiant, l'image elle-même et son nom, on peut pas plus simple...
    Voilà la procédure que j'utilise (qui compile) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
     
    create or replace
    PROCEDURE load_file (
    pdname NUMBER,
    psname VARCHAR2,
    pfname VARCHAR2) IS
     
    src_file BFILE;
    dst_file BLOB;
    lgh_file BINARY_INTEGER;
    BEGIN
    src_file := bfilename('LOGODIR', pfname);
     
    -- insert a NULL record to lock
    INSERT INTO LOGOSUPPORT
    (IDLOGOSUPPORT, IMAGELOGO, NOM)
    VALUES
    (pdname, EMPTY_BLOB(), pfname)
    RETURNING IMAGELOGO INTO dst_file;
     
    -- lock record
    SELECT IMAGELOGO
    INTO dst_file
    FROM LOGOSUPPORT
    WHERE NOM = pfname
    FOR UPDATE;
     
    -- open the file
    dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
     
    -- determine length
    lgh_file := dbms_lob.getlength(src_file);
     
    -- read the file
    dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
     
    -- update the blob field
    UPDATE LOGOSUPPORT
    SET IMAGELOGO = dst_file
    WHERE NOM = pfname;
     
    -- close file
    dbms_lob.fileclose(src_file);
    END load_file;
    Je ne suis pas un spécialiste de PL/SQL, j'ai repris une procédure que j'ai trouvée sur le net et j'ai essayé de l'adapter à mon cas de figure.

    Je l'exécute ensuite par cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    execute LOAD_FILE(1, 'C:\TEMP\CD.jpg', 'Compact Disc');
    J'ai changé les slashs en anti-slashs ou double anti-slashs, mais rien j'ai tjs cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    execute LOAD_FILE(1, 'C:/TEMP/CD.jpg', 'Compact Disc')
    Rapport d'erreur :
    ORA-22288: échec de l'opération FILEOPEN sur le fichier ou le LOB
    Le fichier spécifié est introuvable.
    ORA-06512: à "SYS.DBMS_LOB", ligne 523
    ORA-06512: à "DISCMANAGER.LOAD_FILE", ligne 27
    ORA-06512: à ligne 1
    22288. 00000 -  "file or LOB operation %s failed\n%s"
    *Cause:    The operation attempted on the file or LOB failed.
    *Action:   See the next error message in the error stack for more detailed
               information.  Also, verify that the file or LOB exists and that
               the necessary privileges are set for the specified operation. If
               the error still persists, report the error to the DBA.
    Quelqu'un peut-il m'indiquer mon erreur ?
    Est-il possible d'enregistrer un BLOB dans la version light d'Oracle ?
    Merci pour vos réponses.

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Le paramètre psname n'est utilisé nulle part... je le mettrais en ligne 12 ou 29.

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    src_file := bfilename('LOGODIR', pfname);
    Ceci veut dire que LOGODIR doit être un directory oracle (voir create directory)

    A partir de la 9, on ne peut plus accéder directement à un répertoire du serveur.
    Donc le paramètre psname initialisé avec 'C:\TEMP\CD.jpg', est incohérent.
    d'ailleurs les param d'appel sont faux : psname ne sert à rien et pfname est le nom du fichier, pas 'compact disc'

    http://www.techonthenet.com/oracle/f.../bfilename.php

    et le tuto de developpez sur les bfileshttp://helyos.developpez.com/lob/#L3

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Par défaut
    Merci McM, avec vos liens, j'ai trouvé.
    Merci à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Hibernate & Oracle Express 10g
    Par totoprog dans le forum Hibernate
    Réponses: 4
    Dernier message: 16/12/2008, 17h00
  2. Importation de fichier .sql oracle express 10g
    Par piopium dans le forum Administration
    Réponses: 2
    Dernier message: 30/04/2008, 22h27
  3. [RMAN] Catalog dans Oracle Express
    Par Michael# dans le forum Administration
    Réponses: 12
    Dernier message: 14/12/2007, 15h28
  4. Réponses: 6
    Dernier message: 28/04/2006, 13h36
  5. Problème avec le type BLOB dans oracle
    Par pguedia dans le forum Oracle
    Réponses: 1
    Dernier message: 10/11/2005, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo