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

Oracle Discussion :

[PL/SQL][down&upLOAD] table document fixée


Sujet :

Oracle

  1. #1
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut [PL/SQL][down&upLOAD] table document fixée
    Bonjour,

    Je dois mettre en place un download et upload pour un logiciel de GED (gestion de document).
    Ces fonctions marchaient tres bien en oracle 8i (upload.c et download.c) mais elles ne fonctionnent plus.

    http://helyos.developpez.com/lob/

    Je lis le tuto d'Helios mais j'ai du mal.
    Est ce que la structure de ma table convient ?


    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
     DOC_ID 				   NOT NULL NUMBER(38)
     TITLE					   NOT NULL VARCHAR2(400)
     ORIGINATOR				   NOT NULL VARCHAR2(80)
     UPLOAD_DATE					    DATE
     CHECKIN_FLAG					    VARCHAR2(1)
     ABSTRACT					    VARCHAR2(4000)
     IS_INDEXED					    VARCHAR2(1)
     REVISION					    VARCHAR2(200)
     FILENAME					    VARCHAR2(200)
     FILE_LOADED					    VARCHAR2(1)
     FILESIZE					    NUMBER(38)
     PREVIOUS_VERSION_ID				    NUMBER(38)
     NEXT_VERSION_ID				    NUMBER(38)
     MASTER_ID					    VARCHAR2(1)
     OFFLINE_STORAGE				    VARCHAR2(400)
     DOC_TYPE					    NUMBER(38)
     OWNER_ID					    NUMBER(38)
     ACL_ID 					    NUMBER(38)
     LAST_UPDATE					    DATE
     ETAT						    VARCHAR2(10)
     CHRONO 					    VARCHAR2(30)
     INDICE 					    NUMBER(3)
     DOC_BODY					    BLOB
    Pourriez vous m'aider pas a pas svp ??
    MERCi d'avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Points : 1 326
    Points
    1 326
    Par défaut
    Alors en fait la structure de la table importe peut pour peu que tu es toute les colonnes nécessaires (comme celle de ma table d'exemple) Ensuite dis moi ou est ce que tu recontres des pbs...

  3. #3
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    Waou ! l'auteur en personne ! je suis impressioné
    mes respects !

    Alors j'ai fait mes deux packages, le body et le spec (pkb et pks)
    mais maintenant, il faut que j'arive a appeler la procédure depuis une page web ..


    exec sql_blob.add_blob(1,'helyos.bmp');

  4. #4
    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
    L'exemple d'Helyos fonctionne parfaitement, l'ayant essayé moi-même.

    Il suffit juste de suivre les explications.

  5. #5
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    j'ai jamais mis en doute la qualité de l'exemple et j'ai lu les explications
    MAIS
    je suis pas du tout expert en PL/SQL ...

    :o)

  6. #6
    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
    C'est bien la raison pour laquelle je précise qu'il suffit de suivre les indications.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Points : 1 326
    Points
    1 326
    Par défaut
    je vois pas ce qui te bloque....

  8. #8
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    et bien c'est que tu donne un schéma de table documents et une autre table d'association et moi j'ai qu'une table document qui a la structure que j'ai citée ..

  9. #9
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    ce qui me bloque aussi c'est qu'il faille rentrer un identifiant
    cela correspond a quoi ?

    j'ai du faire un pkb et un pks et il me dit des warning a la compilation
    du coup, il les trouve pas ..

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Points : 1 326
    Points
    1 326
    Par défaut
    Ok donc tu as 2 erreurs....

    Tu as la table et tu as tes packages....

    Pour la table ca devrait passer (moi j'ai séparer la table qui contient les docs ) et une autre qui contient les infos dont moi j'ai besoin.

    Pour ce qui est du package tape SHOW ERRORS après la compilation des packages.

  11. #11
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    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
    CREATE OR REPLACE PACKAGE BODY html_blob IS
     
      PROCEDURE add_blob(p_id NUMBER, p_name VARCHAR2) IS
      BEGIN
        -- Le fichier ayant été ajouté par mod_plsql dans notre table t_html_blob nous avons juste à 
        -- enregistrer la correspondance entre notre id et le nouveau nom du fichier dans la base
        INSERT INTO t_images VALUES (p_id, p_name);
        COMMIT;
        htp.print('Votre image à bien été uploadée ');
      END;
     
      PROCEDURE display_blob(p_id NUMBER) IS
        rec   t_html_blob%ROWTYPE;
        v_amt NUMBER DEFAULT 4096;
        v_off NUMBER DEFAULT 1;
        v_raw RAW(4096);
      BEGIN
      -- On récupere les infos relatives à notre BLOB
        SELECT *
        INTO   rec
        FROM   t_html_blob
        WHERE  NAME = (SELECT filename FROM t_images WHERE id = p_id);
     
        -- On défini le header en fonction de l'objet à afficher
        owa_util.mime_header(rec.mime_type);
        BEGIN
          LOOP
          -- On lit la partie du  BLOB qui nous interesse
            dbms_lob.READ(rec.blob_content, v_amt, v_off, v_raw);
            -- On l'affiche ATTENTION le HTP.PRN est OBLIGATOIRE pour éviter les retours à la ligne intempestif
            htp.prn(utl_raw.cast_to_varchar2(v_raw));
            v_off := v_off + v_amt;
            v_amt := 4096;
          END LOOP;
          dbms_lob.CLOSE(rec.blob_content);
        EXCEPTION
          WHEN no_data_found THEN
            NULL;
        END;
      END;
     
    END html_blob;
    /
    pour le pkb ci-dessus il me met cela comme warning :


    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
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    13/11	 PLS-00201: identifier 'T_HTML_BLOB' must be declared
    13/11	 PL/SQL: Item ignored
    19/5	 PL/SQL: SQL Statement ignored
    21/12	 PL/SQL: ORA-00942: table or view does not exist
    25/5	 PL/SQL: Statement ignored
    25/26	 PLS-00320: the declaration of the type of this expression is
    	 incomplete or malformed
     
    29/9	 PL/SQL: Statement ignored
    29/23	 PLS-00320: the declaration of the type of this expression is
    	 incomplete or malformed
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
     
    35/7	 PL/SQL: Statement ignored
    35/22	 PLS-00320: the declaration of the type of this expression is
    	 incomplete or malformed
    MErci sincèrement pour ton aide ici et via le tutoriel ..

  12. #12
    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
    Et bien, vous avez clairement oublié de créer la table T_HTML_BLOB.

  13. #13
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    tout simplement, effectivement, elle ne porte pas ce nom la ..

    Dans ma table document a mio, j'ai pas le type mime, c grave ?

    Comment la passerelle sait dans quelle colonne ajouter quelle information ???

  14. #14
    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
    Si vous utilisez une autre table, pensez d'abord à modifier votre package pour qu'il pointe dessus....

  15. #15
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    voila voila voila
    L'erreur est corrigée

    Il est vrai que le code donnée marche a merveille, mais je n'arrive pas a l'adapter à l'appli que j'ai, a savoir :

    a chaque chargement d'un fichier dans la table document, il créé une nouvelle ligne apparemment, hors moi, il faut que j'insere mon doc dans ma table (description donnée dans mon premier post) à la ligne correspondant a un identifiant donné ..
    Suis je clair ?

  16. #16
    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 pouvez faire pointer le DAD vers votre propre table, à condition d'y ajouter les colonnes indispensables.
    Je pense que NAME et MIME_TYPE ainsi que la colonne BLOB devraient suffire... (à valider)

  17. #17
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    j'ai fait mais il ajoute une ligne au lieu de mettre a jour la ligne que je veux (car juste avant d'uploader, je decris mon fichier)..

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Points : 1 326
    Points
    1 326
    Par défaut
    euh non c'est pas clair pour moi désolé...... Tu veux faire quoi exactement...

  19. #19
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    et bien, je vais essayer d'etre clair :

    mes utilisateurs entre d'abord les caractéristiques de leur fichier (titre, auteur etc...) puis valide
    J'insere une ligne dans ma table document avec les données entrées
    Ensuite, il associe a ces données un document qui a pour vocation d'aller dans la meme table, a la ligne que je viens d'entrer, dans le champ blob..

    Or ici quadn j'insere un document, je n'ai pas moyen de dire a la passerelle : "ma belle, tu es gentille, il faudrait non seulement que tu le mette dans cette table, dans cette colonne, mais dans cette ligne la !, merci!"

    Donc ce que je pense faire c faire une autre table comme tu fais
    et une fois le fichier uploadé dans cette table temporaire, le 'copier' dans la table ou il y a les données (auteur, titre etc..)
    Mais je ne sais pas comment faire...

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

Discussions similaires

  1. MS SQL SERVER et les tables temporaires
    Par beb_has_return dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/02/2005, 14h36
  2. Réponses: 3
    Dernier message: 11/01/2005, 08h20
  3. résultat de requêtte sql sous form de table
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/03/2004, 15h19
  4. [SQL] Sélection ds plusieurs table
    Par lord_paco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2003, 17h53
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

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