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 :

Récupérer le libellé d'erreur générique des ORA- (= sans le nom des tables et autres)


Sujet :

PL/SQL Oracle

  1. #1
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut Récupérer le libellé d'erreur générique des ORA- (= sans le nom des tables et autres)
    Bonjour,

    Est-ce qu'on peut en plsql récupérer le libellé générique d'une erreur ORA- ?
    SQLERRM renvoie par exemple : ORA-01400: cannot insert NULL into ("MC"."TABLE_MC"."NUM")

    J'aimerais récupérer le texte générique (afin de ne pas afficher les données de mes structures), équivalent à la première ligne de la commande oerr sous linux
    oerr ora 1400
    01400, 00000, "cannot insert NULL into (%s)"
    // *Cause: An attempt was made to insert NULL into previously listed objects.
    // *Action: These objects cannot accept NULL values.
    En plsql je n'ai pas trouvé de fonction interne qui le fait

    J'ai lu sur le forum il me semble une façon avec les tables externe de lancer du code linux (faut que je le retrouve, et voir si ça fonctionne), mais ce sera ma solution de secours.

    Merci.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    C'est original comme demande !

    Une suggestion :
    - alimenter une table utilitaire avec tous les messages d'erreur de la création
    - quand l'exception survient, récupérer le SQLCODE et faire le lien avec cette table pour n'afficher que le libellé générique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
        for i in 1400..1450 loop
            dbms_output.put_line(sqlerrm(-i));
        end loop;
    end;
    /
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Arf.. oui mais c'est juste que je dois faire un webservice et le prestataire qui va l'invoquer veut des messages précis de chaque erreur. Etant donné que je ne veux pas coder pour chaque opération tous les cas possibles d'erreur et que je n'ai pas envie de donner le modèle de données dans les erreurs (ce serait simplifier la vie des hackers potentiels), je veux donner les erreurs génériques (et moi je garderai en log les erreurs complètes).

    Je me suis basé sur rdbms/mesg/oraus.msg je pensais que ce serait blindé comme fichier.. mais non ! Purée, chez Oracle c'est comme partout, y'en a toujours qui sont pas carrés : Ils disent de jamais mettre de ' .. y'en a, parfois y'a des "%s" parfois des \"%s\", des lignes sans espace entre les champs, les 00000 du second champ, parfois c'est 0000 .. tsss..

    Je vais retravailler ce fichier puis l'insérer dans une table de la base.

    Merci.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par McM Voir le message
    ... je veux donner les erreurs génériques (et moi je garderai en log les erreurs complètes).
    C'est bien ce que je propose.
    Dans l'exemple que je donne, je boucle entre les erreurs 1400 et 1450, mais bien sûr il faut balayer beaucoup plus large pour alimenter cette table d'erreurs.
    Ca revient plus ou moins au même que de passer par le fichier oraus.msg, sauf qu'on reste purement en base pour faire ça, sans accéder à un fichier extérieur.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Houla, j'avais lu trop vite ton code et pas calculé que du coup pas de spécificité, juste le sqlerrm sans paramètre.

    Merci !

    PS : après un test, j'ai utilisé sqlerrm(p_codeErreur) dans ma procédure d'erreur et j'ai le message en français, ce qui est encore mieux que ce que j'avais fait avec la récup du fichier.
    Un grand merci Pomalaix.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2019, 02h15
  2. [WD15] Récupérer les libellés des interrupteurs cochés
    Par carpe diem dans le forum WinDev
    Réponses: 11
    Dernier message: 19/06/2019, 08h30
  3. Stockage des erreurs génériques DotNetNuke
    Par Caillou63 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 28/11/2008, 15h21
  4. Récupérer ma base de donnée avec des tables en .frm uniqueme
    Par Michas dans le forum Administration
    Réponses: 5
    Dernier message: 31/08/2005, 13h57
  5. [Oracle][ADO_QRY] Récupérer le code d'erreur
    Par Cryonie dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/06/2004, 13h18

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