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

SQL Oracle Discussion :

[blob] update de champ blob


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 32
    Points : 28
    Points
    28
    Par défaut [blob] update de champ blob
    Je viens de récupérer une table avec un champ varchar qui est un lien vers un fichier sur disque (je sais il a bcp mieux).
    Je viens de changer la structure de la table afin :

    id number,
    lien varchar2,
    document blob

    Est-il possible dans une procédure plsql de loader le fichier sur lequel pointe le lien dans un blob?

    Voici en très court l'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    declare
    mon_lien varchar2(255);
    nbre integer;
    begin
           select count(id) into nbre from vcard;
           for i in 1 .. nbre loop
                select lien into mon_lien from vcard where id = i;        
                dbms_output.put_line(mon_lien);
                update vcard set document = dbms_lob.write(mon_lien) where id = i;
           end loop;
    end;

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Pour compléter, j'ai ajouté à cette table le champ document de type blob.

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Jetez un coup d'oeil à l'article suivant:
    http://sheikyerbouti.developpez.com/...age=Chap9#L9.4

  4. #4
    Membre à l'essai Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SheikYerbouti
    Jetez un coup d'oeil à l'article suivant:
    http://sheikyerbouti.developpez.com/...age=Chap9#L9.4


    Bonjour,

    J'ai presque le meme probleme en Ora9.2

    je n'arrive pas à mettre à jour le champ BLOB d'une table

    j'arrive bien à inserer un nouvelle ligne et à rensegner le blob en meme temps.
    Mais si la ligne existe, je n'arrive pas a mettre à jour le blob.

    voici le script que j'ai essayer de faire, il s'execute correctement mais la colonne n'est pas mise à jour :-(

    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
     
    CREATE OR REPLACE PROCEDURE MAJ_PDF_FACTURE(p_id NUMBER, p_name VARCHAR2) IS
     
        v_blob  BLOB;
        v_bfile BFILE;
     
    BEGIN
     
        -- Création des objets temporaires --
    	dbms_lob.createtemporary( v_blob, TRUE ) ;  
     
     
        -- On déclare un pointeur vers notre fichier
        v_bfile := BFILENAME(DIRECTORY => 'PDF_FACTURE', 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);
     
        -- Mise à jour du BLOP 
     	   UPDATE FACTURE_PDF
                     SET FICHIER_PDF = v_blob 
             WHERE NUM_DOC = p_id;
     
       -- Libération des objets temporaires --
          dbms_lob.freetemporary( v_blob ) ; 
     
    END;
    merci pour votre aide
    Michael (Kit59)

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Vous n'ouliez pas le commit ?

  6. #6
    Membre à l'essai Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SheikYerbouti
    Vous n'ouliez pas le commit ?

    Bonjour,

    non je n'ai pas oublié le commit.

    j'ai trouvé le pb.

    c'est tout simplement que la procedure est executé sous un user autre que le user propriétaire, mais elle met tout de même à jour la table du propriétaire et non du user connecté.

    pour contourner le pb, j'ai recrée la procedure sous le bon user

    s'il y a une autre solution, je suis prenneur

    Merci
    Michael(Kit59)

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Definissez votre procédure en AUTHID CURENT_USER
    http://sheikyerbouti.developpez.com/...age=Chap4#L4.1

  8. #8
    Membre à l'essai Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SheikYerbouti
    Definissez votre procédure en AUTHID CURENT_USER
    http://sheikyerbouti.developpez.com/...age=Chap4#L4.1



    merci beaucoup

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Kit59
    Citation Envoyé par SheikYerbouti
    Jetez un coup d'oeil à l'article suivant:
    http://sheikyerbouti.developpez.com/...age=Chap9#L9.4


    Bonjour,

    J'ai presque le meme probleme en Ora9.2

    je n'arrive pas à mettre à jour le champ BLOB d'une table

    j'arrive bien à inserer un nouvelle ligne et à rensegner le blob en meme temps.
    Mais si la ligne existe, je n'arrive pas a mettre à jour le blob.

    voici le script que j'ai essayer de faire, il s'execute correctement mais la colonne n'est pas mise à jour :-(

    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
     
    CREATE OR REPLACE PROCEDURE MAJ_PDF_FACTURE(p_id NUMBER, p_name VARCHAR2) IS
     
        v_blob  BLOB;
        v_bfile BFILE;
     
    BEGIN
     
        -- Création des objets temporaires --
    	dbms_lob.createtemporary( v_blob, TRUE ) ;  
     
     
        -- On déclare un pointeur vers notre fichier
        v_bfile := BFILENAME(DIRECTORY => 'PDF_FACTURE', 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);
     
        -- Mise à jour du BLOP 
     	   UPDATE FACTURE_PDF
                     SET FICHIER_PDF = v_blob 
             WHERE NUM_DOC = p_id;
     
       -- Libération des objets temporaires --
          dbms_lob.freetemporary( v_blob ) ; 
     
    END;
    merci pour votre aide
    Michael (Kit59)
    J'ai adapté ta procédure à mes spécificités et ça marche. J'ai juste un peu coincé pour le répertoire, j'ai finalement ajouté le droit CREATE ANY DIRECTORY à mon user et voilà.

    Merci à vous deux.

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

Discussions similaires

  1. [10g] Problème UPDATE avec un champ BLOB
    Par Nico02 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 04/07/2013, 09h25
  2. Java - Mysql update champ blob
    Par nawara3003 dans le forum JDBC
    Réponses: 1
    Dernier message: 21/05/2010, 14h26
  3. Select/Update champs blob (texte)
    Par agimation dans le forum Powerbuilder
    Réponses: 4
    Dernier message: 22/09/2009, 10h06
  4. Optimisation Update sur un champ blob
    Par bibi92 dans le forum SQL
    Réponses: 1
    Dernier message: 26/09/2008, 10h51
  5. Update d'un champ BLOB
    Par ZeKlubb dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 17/01/2004, 16h04

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