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 :

table externe - file not found


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 48
    Points
    48
    Par défaut table externe - file not found
    Bonjour,

    Y'a t-il une exception pour trapper le fait que le fichier qui est lié à une external table est absent?

    Je voudrais trapper ce genre d'erreur.

    merci

  2. #2
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    A la création tu n'auras pas d'erreur mais au premier select tu auras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select * from IDB.sga_tst
    *
    ERREUR à la ligne 1 :
    ORA-29913: erreur d'exécution de l'appel ODCIEXTTABLEOPEN
    ORA-29400: erreur de cartouche de données
    KUP-04040: fichier sga_tst.TXT introuvable dans DATA_DIR
    ORA-06512: à "SYS.ORACLE_LOADER", ligne 14
    ORA-06512: à ligne 1
    Voila en espérant avoir répondu à la question

  3. #3
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 48
    Points
    48
    Par défaut
    donc je ne peux pas trapper à la creation...

    mais pour trapper ce genre de select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select * from IDB.sga_tst
    *
    ERREUR à la ligne 1 :
    ORA-29913: erreur d'exécution de l'appel ODCIEXTTABLEOPEN
    ORA-29400: erreur de cartouche de données
    KUP-04040: fichier sga_tst.TXT introuvable dans DATA_DIR
    ORA-06512: à "SYS.ORACLE_LOADER", ligne 14
    ORA-06512: à ligne 1
    l'exception
    WHEN ??? THEN
    ???

    merci

  4. #4
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    A priori le sqlcode nous retourne l'erreur -29913, cependant en fesant une recherche dans sqlerrm mais c'est pas folichon !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare 
    ws pls_integer;
    begin 
    select count(*) into ws from IDB.sga_tst ;
    exception 
    when others then 
     if instr(sqlerrm,'KUP-04040')>1 then
     	dbms_output.put_line ('Fichier non trouvé!');
     end if; 
    end;
    Sinon personne ne serait comment récupérer l'erreur KUP-04040 plus proprement ?

  5. #5
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 48
    Points
    48
    Par défaut
    Je vais essayer ca merci... mais j'avoue que c'est pas tres clean...

    Si y'a quelqu'un qui a une idée plus clean... ce serait apprécié

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    N'oublie quand meme pas de faire un RAISE dans les autres cas parceque là tu est entrain d'ignorer toutes les autres exceptions!

  7. #7
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 48
    Points
    48
    Par défaut
    Je viens d'essayer ca mais dans mon cas, le nom de la table externe est passer en parametre ce qui fait que je dois faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    execute immediate 'select 1 from '||p_nom_table;
    mais le probleme c'est qu'il ne trappe plus l'erreur... y'aurait-il un moyen que je fasse un select en lui passant la table en parametre... avec un curseur dynamique je ne sais pas pourquoi il plante et ne trappe pas l'erreur... c'est peut-etre pas la meme... je ne sais pas. Y'a quelqu'un qui a une idée?

  8. #8
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Citation Envoyé par juin29
    mais le probleme c'est qu'il ne trappe plus l'erreur...
    Je t'ai donner une EXEMPLE, a toi de l'adapter , de plus notre ami remi4444 t'a donner la réponse
    Citation Envoyé par remi4444
    N'oublie quand meme pas de faire un RAISE dans les autres cas parceque là tu est entrain d'ignorer toutes les autres exceptions!


    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
    declare 
    ws pls_integer;
    p_nom_table varchar2(50) := 'IDB.ide_cb';
    begin 
    --select count(*) into ws from IDB.sga_tst ;
    execute immediate 'select count(*) from '||p_nom_table into ws;
    exception 
    when others then 
     if instr(sqlerrm,'KUP-04040')>1 then
     	dbms_output.put_line ('Fichier non trouvé!');
     else
        dbms_output.put_line (sqlerrm);
    	raise;    
     end if;  
    end;
    Tiens nous au courant

  9. #9
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 48
    Points
    48
    Par défaut
    ce que je veux dire c'est qu'en faisant le select avec un execute immédiate, l'erreur n'est plus trappé... il ne passe plus dans l'exception when others que nous avons spécifié. Le select passe tout droit mais pourtant il ne se rend pas à mon dbms apres, il n'écrit pas mon "hello" donc il a planté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    BEGIN 
     
      EXECUTE IMMEDIATE 'select count(1) from '||t#extern_table_name 	;
      dbms_output.put_line('HELLO');
    EXCEPTION 
      WHEN OTHERS THEN 
         IF INSTR(SQLERRM,'KUP-04040')>1 THEN
    	  dbms_output.put_line('err1');
         ELSE
    	  dbms_output.put_line('err2');
         END IF;  
    END;
    Est-ce qu'il y a un autre moyen pour exécuter un select dynamique pour qu'il passe dans l'exception...

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Le problème est lié aux:
    1- Placement du Directory: Le répertoire "DATA_DIR" doit etre impérativement sur le même serveur que la base de données sinon il faut donner le path complet de l’hôte contenant le répertoire.
    2- Droits d'accès sur le fichier: Ajoute les autorisations sur le fichier pour les autres (others) 707 est suffisant (N.B: Si besoin de read uniquement donc 704/604 suffit).

    ERREUR à la ligne 1 :
    ORA-29913: erreur d'exécution de l'appel ODCIEXTTABLEOPEN : lié surtout au deuxième point
    ORA-29400: erreur de cartouche de données
    KUP-04040: fichier sga_tst.TXT introuvable dans DATA_DIR
    ORA-06512: à "SYS.ORACLE_LOADER", ligne 14
    ORA-06512: à ligne 1

Discussions similaires

  1. error file not found: unit1.dfm
    Par bouzaidi dans le forum Delphi
    Réponses: 4
    Dernier message: 12/04/2007, 11h36
  2. [Error] File not found: 'Unit1.DFM'
    Par aliwassem dans le forum Delphi
    Réponses: 1
    Dernier message: 08/04/2007, 08h13
  3. File not found
    Par mattyeux dans le forum ASP
    Réponses: 7
    Dernier message: 14/02/2007, 23h12
  4. Exception: TXMLDocument.LoadXMLFile File not found
    Par powerlog dans le forum XMLRAD
    Réponses: 12
    Dernier message: 09/08/2005, 11h29
  5. [Quartz][Tomcat] Jobs.xml file not found exception
    Par Arnaud Giuliani dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 05/08/2005, 10h20

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