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 :

Insertion d'un fichier dans un champ blob


Sujet :

PL/SQL Oracle

  1. #1
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Points : 173
    Points
    173
    Par défaut Insertion d'un fichier dans un champ blob
    Bonjour à tous;


    Voici un package que je veux utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE
     
    PACKAGE SQL_BLOB AS
     
     
     
    PROCEDURE add_blob(p_id NUMBER, p_name VARCHAR2);
     
     
     
    END SQL_BLOB;


    Package Body :

    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
    45
    46
    47
    48
     
    CREATE OR REPLACE
     
    PACKAGE BODY SQL_BLOB AS
     
     
     
    PROCEDURE add_blob(p_id NUMBER, p_name VARCHAR2) AS
     
     
     
        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_contact
     
        VALUES
     
          (p_id,'','','', empty_blob())
     
             RETURNING filepdf INTO v_blob;
     
        -- On déclare un pointeur vers notre fichier
     
        v_bfile := bfilename(directory => 'blobdir', 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;



    Ce package est sensé me permettre d’insérer un fichier dans ma table t_contact dans le champ filepdf, j’ai créer une variable blobdir qui contient le repertoire que je vais utiliser (CREATE directory blobdir AS 'c:\temp\'

    Mais à l’exécution de ce package (exec sql_blob.add_blob(1,'test.txt'), j’ai le message d’erreur suivant :



    Error starting at line 1 in command:

    exec sql_blob.add_blob(1,'test.txt');

    Error report:

    ORA-22285: répertoire ou fichier inexistant pour l'opération FILEOPEN

    ORA-06512: à "SYS.DBMS_LOB", ligne 523

    ORA-06512: à "MALEK.SQL_BLOB", ligne 16

    ORA-06512: à ligne 1



    Alors que le fichier est le repertoire sont bien present sur mon disque.


    Serait-il possible de m'aider ?
    Merci d'avance

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Avec 10.2.0.1 sous Windows XP, un fichier c:\temp\test.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     SQL> grant create any directory to test;
     SQL> grant execute on dbms_lob to test;
     SQL> create directory blobdir as 'c:\temp';

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    SQL> drop table t_contact;
     
    Table supprimée.
     
    SQL>
    SQL> create table t_contact(
    c1 number, c2 varchar2(10), c3 varchar2(10), c4 varchar2(10), c5 clob);
     
    Table créée.
     
    SQL>
    SQL> CREATE OR REPLACE PACKAGE SQL_CLOB AS
      2  PROCEDURE add_clob(p_id NUMBER, p_name VARCHAR2);
      3  END SQL_CLOB;
      4  /
     
    Package créé.
     
    SQL>
    SQL> CREATE OR REPLACE PACKAGE BODY SQL_CLOB AS
      2
      3  PROCEDURE add_clob(p_id NUMBER, p_name VARCHAR2) AS
      4      v_clob  CLOB;
      5      v_bfile BFILE;
      6
      7    BEGIN
      8      INSERT INTO t_contact
      9      VALUES
     10        (p_id,'','','', empty_clob()) RETURNING c5 INTO v_clob;
     11      v_bfile := bfilename(directory => 'BLOBDIR', filename => p_name);
     12      dbms_lob.fileopen(v_bfile);
     13      dbms_lob.loadfromfile(v_clob, v_bfile, dbms_lob.getlength(v_bfile));
     14      dbms_lob.fileclose(v_bfile);
     15  END;
     16  END SQL_CLOB;
     17  /
     
    Corps de package créé.
     
    SQL>
    SQL>
    SQL> exec sql_clob.add_clob(1, 'TEST.TXT');
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>
    SQL> select dbms_lob.substr(c5,2,1) from t_contact;
     
    DBMS_LOB.SUBSTR(C5,2,1)
    --------------------------------------------------------------------------------
     
    ok
     
    SQL>

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/12/2012, 16h42
  2. Insertion f'un fichier dans un champ
    Par gorjette dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/10/2010, 03h34
  3. [Oracle] Enregistrer fichier dans un champs de type BLOB
    Par madevilts dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/01/2008, 08h46
  4. Insertion d'un fichier dans un BLOB qui ne marche pas
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 15/11/2007, 19h57
  5. [DEBUTANT]Inserer des fichiers dans des champs blob
    Par tripper.dim dans le forum Débuter
    Réponses: 1
    Dernier message: 19/10/2006, 22h23

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