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

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2002
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : juin 2002
    Messages : 201
    Points : 88
    Points
    88

    Par défaut Requête avec erreur personnalisée

    Bonjour tous le monde, et bonne vacances pour ceux qui ne sosnt pas la

    Je travaille sur une requete ou je voudrais quelle sorte en erreur quand le nombre de ligne et > a 0, et d'afficher le nombre de ligne.

    Pour le moment, tout va bien, quand j'execute la requete, elle se met bien en erreur. Mais des que je la fait manger a OEM pour créer un job, elle se met en Réussi, avec dans la log mon erreur peronnalisée.

    Voici ma requete:

    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
     
    SET SERVEROUTPUT ON
    DECLARE
      var_owner DBA_RECYCLEBIN.OWNER%%type;
      object_original DBA_RECYCLEBIN.original_name%%type;
      nombre integer;
      var_type varchar(30);
      droptime DBA_RECYCLEBIN.droptime%%type;
      CURSOR curseur IS select owner, original_name, count(object_name) Nombre, type, min(droptime) 
            from dba_recyclebin WHERE TO_DATE(DROPTIME,'YYYY-MM-DD HH24:MI:SS') < SYSDATE - INTERVAL '7' DAY
            GROUP BY OWNER, ORIGINAL_NAME, TYPE 
            ORDER BY owner, type, 5 desc;
    BEGIN
        open curseur;
        dbms_output.put_line('');
        loop 
        fetch curseur into var_owner,
                            object_original,
                            nombre,
                            var_type,
                            droptime;
     
            EXIT WHEN curseur%%notfound;    
     
            dbms_output.put_line(nombre || ' ' || var_type || ' : ' || var_owner || '.' || object_original || ' droppée au moins le ' || droptime);
        end loop;
     
        If curseur%%rowcount = 0 then
            dbms_output.put_line('Toutes les corbeilles sont vides');
        else
            RAISE_APPLICATION_ERROR
                (-20501, 'Trop de corbeilles pleines: ' || curseur%%ROWCOUNT);
        end if;
        close curseur;
    END;    
    /
    J'ai du doubler les % pour OEM, quelqu'un aurait une idée ?
    Mon objectif est d'avoir une vrai erreur dans le tableau de bord des jobs oracle
    dbsanté: Ma première application Android consacré au suivi médical totalement déconnecté.
    Score Assistant: Dans un tout autre registre, une application pour compter les points de plus de 80 jeux !
    N'hésitez pas a les télécharger !!

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

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 321
    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 321
    Points : 7 067
    Points
    7 067
    Billets dans le blog
    3

    Par défaut

    Privilégie les FOR LOOP que les OPEN CURSOR, cela simplifie énormément le code

    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
    SET SERVEROUTPUT ON
    DECLARE
     i NUMBER := 0;
    BEGIN
        dbms_output.put_line('');
        FOR rc IN (SELECT owner, original_name, COUNT(object_name) Nombre, TYPE, MIN(droptime) droptime
                    FROM DBA_RECYCLEBIN WHERE TO_DATE(DROPTIME,'YYYY-MM-DD HH24:MI:SS') < SYSDATE - INTERVAL '7' DAY
                    GROUP BY OWNER, ORIGINAL_NAME, TYPE 
                    ORDER BY owner, TYPE, 5 desc)
        LOOP 
        	i := i + 1;
          dbms_output.put_line(rc.nombre ||' '|| rc.TYPE ||' : '|| rc.owner ||'.'|| rc.original_name ||' droppée au moins le '|| rc.droptime);
        END LOOP;
     
        IF i > 0
        THEN
           RAISE_APPLICATION_ERROR(-20501, 'Trop de corbeilles pleines: '|| i);
        END IF;
     
        dbms_output.put_line('Toutes les corbeilles sont vides');
     
    END;    
    /
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2002
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : juin 2002
    Messages : 201
    Points : 88
    Points
    88

    Par défaut

    Merci pour la simplification je supporte pas les curseurs ....
    et sinon pour ma gestion d'erreur, t'a une idée ?
    dbsanté: Ma première application Android consacré au suivi médical totalement déconnecté.
    Score Assistant: Dans un tout autre registre, une application pour compter les points de plus de 80 jeux !
    N'hésitez pas a les télécharger !!

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

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 321
    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 321
    Points : 7 067
    Points
    7 067
    Billets dans le blog
    3

    Par défaut

    Je n'utilise pas OEM, de plus j'imagine qu'il utilise dbms_scheduler que je ne connais pas non plus. Je ne peux pas savoir quelle donnée est affichée.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2002
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : juin 2002
    Messages : 201
    Points : 88
    Points
    88

    Par défaut

    En fait c'etait tout bête, faut utiliser une instruction bien connue de ceux qui utilisent OEM (elle est présente par défault des qu'on crée un job):
    WHENEVER SQLERROR EXIT FAILURE;
    dbsanté: Ma première application Android consacré au suivi médical totalement déconnecté.
    Score Assistant: Dans un tout autre registre, une application pour compter les points de plus de 80 jeux !
    N'hésitez pas a les télécharger !!

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

Discussions similaires

  1. [11g] Requête avec erreur ORA 00905
    Par shadowmoon dans le forum PL/SQL
    Réponses: 1
    Dernier message: 17/04/2014, 16h02
  2. [WD12E] requête avec erreur
    Par plm222 dans le forum WinDev
    Réponses: 8
    Dernier message: 27/01/2012, 08h42
  3. #Erreur dans une requête avec une fonction personnalisée
    Par pguiheu dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 04/07/2006, 15h45
  4. [VBA] Erreur sur une requête avec un opérateur
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2006, 17h12
  5. Erreur requête avec liaison fichier HyperFile
    Par nicolasT29 dans le forum HyperFileSQL
    Réponses: 24
    Dernier message: 19/06/2006, 11h56

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