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 :

Message erruers et developer6i


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut Message erruers et developer6i
    Salut, et merci pour votre collaboration Mr,
    je ecris cette procedure pour remplir les listes (combo box sour developer 6i) et je utilise une procedure stockée au niveau de la base de donnée oracle 9i pour l'affichage des erruers de l'application mais en utilisant cette procedure (creer_list),la procedure d'affichage des messages d'erreurs n'est plus fonctionnelle, comment de peut proceder pour resoudre cette problème et merci
    voici le coprs de la procedure creer_list:
    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
     
    PROCEDURE creer_list( 
    LIST_ITEM IN VARCHAR2, 
    COL_1 IN VARCHAR2, 
    COL_2 IN VARCHAR2, 
    TAB_NAME IN VARCHAR2) IS 
     
    rg_id recordgroup; 
    err number; 
    BEGIN 
    rg_id := Find_Group( 'GR_NAME' ); 
    IF NOT Id_Null(rg_id) THEN 
    Delete_Group( rg_id ); 
    END IF; 
    rg_id := create_group_from_query('GR_NAME', 
    'select '||COL_1||',to_char('||COL_2||') from '||TAB_NAME); 
    err := populate_group(rg_id); 
    populate_list(LIST_ITEM,rg_id); 
    END;
    Merci

  2. #2
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut

  3. #3
    Expert confirmé
    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
    Par défaut
    la procedure d'affichage des messages d'erreurs n'est plus fonctionnelle
    Que voulez-vous dire par là ? Quel est le problème, le message d'erreur ?

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut RE: mesages erreurs
    La procedure affiche :
    "FRM-40735: When-mouse-clicked trigger raised unhandled exception ora-2000"
    au lieu d'un message personnalisé "ora-2000: la date doit être inférieur au date du jour"
    Merci

  5. #5
    Expert confirmé
    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
    Par défaut
    Mais, il n'y a aucune section Exception dans votre bloc PL/SQL. Comment comptiez-vous gérer l'exception ???

  6. #6
    Expert confirmé
    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
    Par défaut
    Voici un exemple d'erreur généré dans une procédure stockeé:

    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
      ---------------------------------
      -- Lock trigger transactionnel --
      ---------------------------------
      PROCEDURE emp_lock2( t IN emptab ) IS
        v_rownum NUMBER;
        verrou exception;
        pragma exception_init ( verrou, -54 ) ;
      BEGIN
    	FOR i IN t.first..t.last LOOP
    	  SELECT empno
    	  INTO   v_rownum
    	  FROM   emp
    	  WHERE  empno = t(i).empno
    	  FOR UPDATE OF ename NOWAIT;
    	END LOOP ;
      EXCEPTION
        When verrou then
    	  Raise_Application_Error( -20100, '^Verrouillage de l''enregistrement impossible^' ) ;
      END emp_lock2;
    et la gestion de l'erreur dans le module Forms dans un trigger ON-ERROR:

    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
    Declare
    	LC$Msg Varchar2(2000) ;
    Begin	
     
    If DBMS_ERROR_CODE = -20100 Then
    	-- Récupération du message inséré dans Raise_Application_Error --
          LC$Msg := substr(DBMS_ERROR_TEXT, 
                instr(DBMS_ERROR_TEXT,'^')+ 1 ,
                ( instr(DBMS_ERROR_TEXT,'^',-1) - instr(DBMS_ERROR_TEXT,'^') - 1) ) ;
     
    	message(LC$Msg, acknowledge ) ;
    Else
    	message('erreur : ' || DBMS_ERROR_TEXT, acknowledge ) ;
    End if ;
     
    End ;
    Bien sûr, vous pouvez trapper l'erreur directement dans votre block pl/sql sans passer par le trigger ON-ERROR

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut La procedure
    cette procedure qui affiche les messages d'erreurs applications
    create or replace procedure IA_Erreur_Application
    (v_nls_lang in ia_msg_erreur.nls_lang%TYPE,
    v_code_erreur in ia_msg_erreur.code_erreur%TYPE DEFAULT -20000,
    v_type_erreur ia_msg_erreur.type_erreur%TYPE DEFAULT NULL,
    v_Text_Erreur ia_msg_erreur.texte_erreur%TYPE DEFAULT NULL) is

    v_message_erreur ia_msg_erreur.texte_erreur%type;
    -- retourne un message d'erreur à partir de la table des messages
    begin
    -- si le texte du message est indiqué alors on l'affiche tel quel
    IF v_Text_Erreur IS NOT NULL THEN
    raise_application_error(v_code_erreur, v_Text_Erreur);
    -- sinon on cherche le texte de l'erreur dans la table msg_erreur
    else
    select m.texte_erreur
    into v_message_erreur
    from ia_msg_erreur m
    where m.nls_lang = v_nls_lang
    and m.code_erreur = -20000--v_code_erreur
    and m.type_erreur = v_type_erreur;

    raise_application_error(-20000,/*v_code_erreur,*/ v_message_erreur);
    end if;

    -- si le message n'est pas dans la table msg_erreur
    exception when no_data_found THEN
    if v_nls_lang = 'ARABIC' then
    raise_application_error(v_code_erreur,'äÕ ÇáÎØÃ ÛíÑ ãæÌæÏ');
    else
    raise_application_error(v_code_erreur, 'Message d''erreur non trouvé');
    end if;
    end IA_Erreur_Application;
    et merci

  8. #8
    Expert confirmé
    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
    Par défaut
    Du calme, ne cédez pas à la panique !

    prenez le temps de choisir un titre correct et d'utiliser les balises pour encadrer le code.

    c'est très facile, sélectionnez la partie du texte qui correspond au code et cliquez sur le bouton Code

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut Message
    cette procedure qui affiche les messages d'erreurs applications
    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
    create or replace procedure IA_Erreur_Application 
    (v_nls_lang in ia_msg_erreur.nls_lang%TYPE, 
    v_code_erreur in ia_msg_erreur.code_erreur%TYPE DEFAULT -20000, 
    v_type_erreur ia_msg_erreur.type_erreur%TYPE DEFAULT NULL, 
    v_Text_Erreur ia_msg_erreur.texte_erreur%TYPE DEFAULT NULL) is 
     
    v_message_erreur ia_msg_erreur.texte_erreur%type; 
    -- retourne un message d'erreur à partir de la table des messages 
    begin 
    -- si le texte du message est indiqué alors on l'affiche tel quel 
    IF v_Text_Erreur IS NOT NULL THEN 
    raise_application_error(v_code_erreur, v_Text_Erreur); 
    -- sinon on cherche le texte de l'erreur dans la table msg_erreur 
    else 
    select m.texte_erreur 
    into v_message_erreur 
    from ia_msg_erreur m 
    where m.nls_lang = v_nls_lang 
    and m.code_erreur = -20000--v_code_erreur 
    and m.type_erreur = v_type_erreur; 
     
    raise_application_error(-20000,/*v_code_erreur,*/ v_message_erreur); 
    end if; 
     
    -- si le message n'est pas dans la table msg_erreur 
    exception when no_data_found THEN 
    if v_nls_lang = 'ARABIC' then 
    raise_application_error(v_code_erreur,'äÕ ÇáÎØÃ ÛíÑ ãæÌæÏ'); 
    else 
    raise_application_error(v_code_erreur, 'Message d''erreur non trouvé'); 
    end if; 
    end IA_Erreur_Application;
    et merci

  10. #10
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Merci d'utiliser convenablement le forum et d'éviter de créer des sujets inutilement

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 90
    Par défaut Problème de capture des erreurs au niveau forms
    En utilisant les deux procédures déjà presentées les erreurs affichés sont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ora-24334: no descriptor for this position
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ora-01403: no data found
    ces deux messages sont affichée à l'aide de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message(DBMS_ERROR_TEXT)
    et merci pour votre collaboration

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Par défaut
    Je veux pas troller, mais je trouve l'idée du gif animé excellente !
    Bravo bouyao

Discussions similaires

  1. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  2. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. A lire impérativement avant de poster un message
    Par ok.Idriss dans le forum Demandes
    Réponses: 0
    Dernier message: 01/05/2002, 18h57

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