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

Forms Oracle Discussion :

Eviter message ORA-06502


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut Eviter message ORA-06502
    Bonjour,
    J'utilise Oracle Forms 6i sur une BD Oracle Release 9i.
    L'utilisateur de mon application doit s'identifier.
    J'utilise la fonction d'oracle : logon()
    À la première connection, le compte est expiré et une fenêtre de changement de mot de passe apparait. C'est oracle qui gère cela (et c ca qui me dérange) car:
    Le mot de passe (à la création) est défini à 8 caractères; Quand la fenetre de changement du mot de passe apparaît, l'utilisateur peut mettre un nouveau mot de passe avec moins de 8 caractères, Et j'ai l'erreur :
    FRM-40735: Déclencheur ON-ERROR a détecté une exception ORA-06502 non traitée.
    J'ai mis la contrainte de 8 caractère dans la BD.

    Mon objectif est de changer cette erreur mais j'y arrive pas avec un raise_application_error car c'est le ON-ERROR de la fenetre du changement du mot de passe.

    Est-ce que qqn à une idée?
    (J'ai déjà essayer de créé la fenetre du changement du mot de passe mais j'ai plus le droit de changer mon pass quand le user est expiré, contrairement à ce qui se passe actuellement)

    Votre aide serait trés apprécié, Merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Tout ce que je peux te dire d'après les infos que tu nous donnes, c'est que l'erreur est produite soit directement dans ton déclencheur ON-ERROR soit dans les procédures et fonctions appelées dans ce déclencheur.
    Regarde toutes les déclaration de tes variables pour déterminer ce qui peut poser ce problème.

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut
    J'ai vérifié tout mes paramètres, mon ON-ERROR contient set_alert_property de quelques erreurs pour afficher des messages compréhensibles pour l'usager.
    Le ON_ERROR que j'ai dans mon erreur FRM-40735 (due à ORA-06502) n'est pas le mien.
    L'erreur est là (mot de passe défini dans la bd à 8 caractères alors que le user met moins que ca).
    Comment faire pour personnalisé cette erreur!
    Merci,

  4. #4
    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
    Comment faire pour personnalisé cette erreur!
    On la gère dans un bloc Exception et on affiche le message que l'on veut.

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Soit vous ne nous avez pas donné le bon message d'erreur, soit vous avez mal regardé, mais le message "FRM-40735: Déclencheur ON-ERROR a détecté une exception ORA-06502 non traitée" indique clairement que vous avez une erreur oracle dans votre déclencheur ON-ERROR.

    Si vous ne nous donnez pas le code de ce déclencheur, je ne pourrai pas vous en dire plus.

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut
    Voici mon code de 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
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    declare
      v_err_no    number:=       error_code;
      v_err_txt   varchar2(80):= error_text;
      v_err_type  varchar2(3):=  error_type;
      v_alert_choix   number;
     
    begin
        message('err :' || error_code);
      message(' ');
    if v_err_no = 12154 then
        --
        set_alert_property('CFG_ERROR'
                          ,alert_message_text
                          ,'La base de données spécifiée n''est pas valide.');
        v_alert_choix := show_alert('CFG_ERROR');
     
      elsif v_err_no in ( 01004, 01005, 01017 ) then
        --
        set_alert_property('CFG_ERROR'
                          ,alert_message_text
                          ,'Le nom de l''utilisateur ou le mot de passe ne sont pas valides.');
        v_alert_choix := show_alert('CFG_ERROR');
     
      elsif v_err_no = 28001 then
        --
        set_alert_property('CFG_ERROR'
                          ,alert_message_text
                          ,'Votre mot de passe est expiré. ');
        v_alert_choix := show_alert('CFG_ERROR');
        message('Serge');
        message(' ');
     
      elsif v_err_no = 00439 then 
            set_alert_property('CFG_ERROR'
                          ,alert_message_text
                          ,'Le nom d''utilisateur ' || '' || get_application_property(username) || 
                           '' || ' n''est pas valide et ' || 
                           '' || ' est sensible à la casse.' || chr(10) || chr(10) ||
                           'Le nom d''utilisateur devra être entre guillemets " " ');
        v_alert_choix := show_alert('CFG_ERROR');
     
       elsif v_err_no = 28001 then
        --
        set_alert_property('CFG_ERROR'
                          ,alert_message_text
                          ,'Votre mot de passe est expiré. ');
        v_alert_choix := show_alert('CFG_ERROR');
        message('Serge');
        message(' ');
     
       else
        -- Les autres messages d'erreur
        message(v_err_type || '-' || to_char(v_err_no) || ': ' || v_err_txt);
        raise form_trigger_failure;
       end if;
    end;

    Comme j'ai mentionné plus haut, l'erreur existe et c'est logique, mais j'aimerai que l'usager (qui n'est pas forcément qqn qui connait Oracle) soit en mesure de savoir que le nouveau mot de passe prenne caractère.
    (Cette contrainte du mot de passe est bloquante à la création du mot de passe mais étant donné, que le nouveau user est expiré, la fenetre de changer mot de passe apparaît ''suite au logon(user,pass@BD)''et j'ai pas contrôle deçu).

    Merci,

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut
    Finalement ca marche mon affaire!!
    En passant, mon bloc exception est le bloc ON-ERROR.

    Solution : 1) Faut pas renommer le bloc ON-ERROR, bien faire attention au tiret (non underscore).
    2) Dans mon ON-ERROR, j'avais mis une variable pour contenir mon message d'erreur, sauf que si le message dépasse le nombre de caractères de cette variable, c'est le message oracle qui apparaît (du genre : ORA-xxxxx: ...)
    J'ai décidé de ne pas mettre les variables oracle (si je peux appelé error_code, error_text et error_type variables) dans des variables déclarées.

    Merci beaucoup pour votre aide

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

Discussions similaires

  1. ORA-06502 parametre de sortie pose probleme
    Par Mons dans le forum SQL
    Réponses: 33
    Dernier message: 12/05/2009, 16h37
  2. Réponses: 3
    Dernier message: 14/04/2006, 13h54
  3. [PL/SQL] Signification du message ORA-106561
    Par PDR dans le forum Oracle
    Réponses: 1
    Dernier message: 08/02/2006, 15h58
  4. Réponses: 3
    Dernier message: 07/02/2006, 10h14
  5. ORA-06502 sur un delete
    Par DBS dans le forum Oracle
    Réponses: 61
    Dernier message: 01/04/2005, 17h01

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