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 :

pl/sql variable


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut pl/sql variable
    Es que c'est possible de donner a une variable une valeur se trouvant dans un fichier texte ????
    J'aimerai faire une boucle et qu'une variable puisse prendre differentes valeurs qui se trouverai dans un fichier texte au prealable.

  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
    Oui c'est possible grace au package utl_file

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Savez vous d'ou vient 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
    15
    SQL> declare
      2  f_file_id UTL_FILE.FILE_TYPE;
      3  BEGIN
      4   f_file_id := UTL_FILE.FOPEN('test','testecri','a');
      5  UTL_FILE.PUT_LINE (f_file_id,'Il est beau mon fichier :-D');
      6  UTL_FILE.FCLOSE (f_file_id);
      7   end;
      8  /
    declare
    *
    ERROR à la ligne 1 :
    ORA-06510: PL/SQL : exception définie par l'utilisateur non traitée
    ORA-06512: à "SYS.UTL_FILE", ligne 98
    ORA-06512: à "SYS.UTL_FILE", ligne 157
    ORA-06512: à ligne 4

  5. #5
    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
    Pour moi cela viens du fait que ton repertoire de sortie n'est pas bon dans ton utl_file.fopen...

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    As tu fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE OR REPLACE DIRECTORY MON_REP AS '/oracle'; 
    GRANT READ,WRITE ON DIRECTORY MON_REP TO mon_user;
    Attention le nom du DIRECTORY doit être en MAJUSCULE

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    J'ai une erreur sur les privilèges:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> CREATE OR REPLACE DIRECTORY TEST AS 'C:\test';
     
    Répertoire créé.
     
    SQL> GRANT READ,WRITE ON DIRECTORY TEST TO Pack95;
    GRANT READ,WRITE ON DIRECTORY TEST TO Pack95
               *
    ERROR à la ligne 1 :
    ORA-22928: privilège sur répertoires non valide

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    j'arrive a donner le privilège read mais pas le Write .

    Une ptite idée ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> GRANT READ ON DIRECTORY TEST TO PACK95;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SQL> GRANT READ, WRITE ON DIRECTORY TEST TO PACK95;
    GRANT READ, WRITE ON DIRECTORY TEST TO PACK95
                *
    ERROR à la ligne 1 :
    ORA-22928: privilège sur répertoires non valide

  9. #9
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    l'utilisateur qui exécute les process Oracle a-t-il les droits sur ce répertoire ?

    C'est quel OS et quel est l'utilisateur d'installation ?

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Oracle 8i.

    J'ai mit les droits sur "Pack95" a partir de "System" mais je n'arrive pas a donner le droit d'ecriture.

  11. #11
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ATTENTION : je parle du coté OS... si l'utilisateur oracle (ou autre qui a servi pour l'install) n'a pas les droits sur le répertoire définit dans la DIRECTORY ça ne marchera effectivement pas

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Comment savoir quel utilisateur a les droits dessus??

  13. #13
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    t'es sous Linux ou Windows ?

    Sous linux tu vois les droits sur le fichier avec ls -l <fichier>, sous windows c'est dans les propriétés du répertoire

    Attention, sous windows, ça ne peux pas marcher sur les lecteurs réseaux, il faut dans ce cas utiliser le chemin complet de la forme \\serveur\dossier

  14. #14
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    mai en faite es que d'un poste client je peut utiliser un dossier du poste client?? peut on donner les droits a partir du poste client ??

  15. #15
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ha non pas du tout, c'est un répertoire du serveur qu'il faut indiquer

  16. #16
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Es que le dossier doit etre a un endroit specifique sur le serveur ou pas ??
    parce ke la j'arrete pa d'avoir toujours les memes erreurs.

  17. #17
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    pas sur un lecteur réseau c'est tout et dans un répertoire ou le compte qui lance la base a les droits en écriture

  18. #18
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Je comprend vraiment pas pourkoi ca veut pas marcher.....

    J'arrive a bien donner les droits de lecture. J'arrive pas pour l'ecriture
    et quand je lance une operation de lecture dans un fichier j'ai cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ERROR à la ligne 1 : 
    ORA-06510: PL/SQL : exception définie par l'utilisateur non traitée 
    ORA-06512: à "SYS.UTL_FILE", ligne 98 
    ORA-06512: à "SYS.UTL_FILE", ligne 157 
    ORA-06512: à ligne 4
    mais pourtant j'utilise bien un dossier n'etant pas sur un lecteur reseau et sur lequel j'ai tout les droits.

    Vous n'auriez pas un autre moyen de pouvoir lire dans un fichier ??

  19. #19
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Tu as bien une version d'Oracle supérieur ou égale à la 8i ?

    le nom du DIRECTORY doit être en majuscule

    Colle ton code ici qu'on voit d'où vient l'erreur

  20. #20
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Version:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Connecté à :
    Oracle8i Release 8.1.7.0.0 - Production
    JServer Release 8.1.7.0.0 - Production

    Je me connecte avec l'utilisateur "SYS" a partir du poste serveur oracle.

    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
    SQL> show parameter utl_file
     
    NAME                                 TYPE    VALUE
    ------------------------------------ ------- -------------------------
    utl_file_dir                         string
     
     
    SQL> CREATE OR REPLACE DIRECTORY TEST AS 'D:\ORA817\TEST';
     
    Répertoire créé.
     
    SQL> GRANT READ, WRITE ON DIRECTORY TEST TO Pack95;
    GRANT READ, WRITE ON DIRECTORY TEST TO Pack95
                *
    ERREUR à la ligne 1 :
    ORA-22928: privilège sur répertoires non valide
     
    SQL> GRANT READ ON DIRECTORY TEST TO Pack95;
     
    Autorisation de privilèges (GRANT) acceptée.
    Ensuite je me reconnecte en utilisateur "Pack95" sur le poste serveur.

    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
    SQL> DECLARE 
      2  f_file_id UTL_FILE.FILE_TYPE;
      3  v_line VARCHAR2(4000);
      4  BEGIN
      5  f_file_id := UTL_FILE.FOPEN('TEST','numero.txt','r');
      6  UTL_FILE.GET_LINE(f_file_id,v_line);
      7  DBMS_OUTPUT.PUT_LINE(v_line);
      8  END;
      9  /
    DECLARE
    *
    ERREUR à la ligne 1 :
    ORA-06510: PL/SQL : exception définie par l'utilisateur non traitée
    ORA-06512: à "SYS.UTL_FILE", ligne 98
    ORA-06512: à "SYS.UTL_FILE", ligne 157
    ORA-06512: à ligne 5

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [SQL] Variable pour sélectionner une table
    Par Sba3Net dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/11/2007, 13h40
  2. [SQL] Variable multi-informations style tableau
    Par gantec dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/10/2007, 16h42
  3. PL/SQL Variable dans un SELECT
    Par lolo-d dans le forum PL/SQL
    Réponses: 1
    Dernier message: 04/12/2006, 08h17
  4. PL/SQL : Variable globale
    Par poca10 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 07/12/2005, 09h34

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