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

SQL Oracle Discussion :

Select qui ne retourne rien


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut Select qui ne retourne rien
    Bonjour tout le monde.

    Je dois créer une fonction qui va rechercher un codprocmc dans 3 tables.
    S'il est dans une table il est pas dans les autres.

    Je veux à tout prix eviter de faire une requete très loiurde contenant les 3 tables, car elles sont très lourde chacune. et que la proba de trouver le codprocmc dans la table 1 est de 80% et 10% dans les 2 autres tables.

    Bref, mon problème est comment détecter que mon codprocmc n'est pas dans la table 1 afin d'éviter de rechercher dans les autres ??

    Voici le code que j'ai fait.
    Dans ce cas quand le codprocmc n'existe pas, il ne m'affiche même pas le dbms_output, et je peux mettre n'importe quoi dans le LOOP, j'ai l'impression qu'il s'en fou.

    Si vous pouviez m'aider
    Merci d'avance

    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 PROC_MAJ_TABLE(v_table in VARCHAR) as
    BEGIN
     
        FOR lst_Ancien in (SELECT numdossie, codprodui FROM FICINC)
        LOOP
     
          select codprocmc into new_codprocmc
          from ctrcpt
          where numdossie = lst_Ancien.numdossie
          and codprodui = lst_Ancien.codprodui; 
     
          dbms_output.put_line('|' || new_codprocmc || '| ' ||  lst_ancien.numdossie);
     
     
     
        END LOOP;
     
     
    END;

  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
    Points : 3 609
    Points
    3 609
    Par défaut
    En utilisant l'exception no_data_found comme dans l'exemple ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    declare i number;
    begin
      select 1 into i from dual where 1 = 0;
    exception
       when no_data_found then
           select 2 into i from dual where 1 = 1;
    end;
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Yes !
    Oki merci.

    Pour ceux que ca interresse voici mon code final de récupération du codprocmc :

    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
    PROCEDURE PROC_MAJ_TABLE(v_table in VARCHAR) as
    BEGIN
     
        FOR lst_Ancien in (SELECT numdossie, codprodui FROM FICINC)
        LOOP
          begin
            select codprocmc into new_codprocmc
            from ctrcpt
            where numdossie = lst_Ancien.numdossie
            and codprodui = lst_Ancien.codprodui; 
     
            dbms_output.put_line('CONTRAT : ' || lst_Ancien.numdossie || ' ' || new_codprocmc);
     
            /*Si o ne trouve pas dans contrat compte on regarde dans refusé*/
            EXCEPTION 
            When no_data_found then
                begin
                  select codprocmc into new_codprocmc
                  from ETUDEREFUSEE
                  where numdossie = lst_Ancien.numdossie
                  and codprodui = lst_Ancien.codprodui; 
     
                  dbms_output.put_line('REFUSE : ' || lst_Ancien.numdossie || ' ' || new_codprocmc);
     
                  /*Si o ne trouve pas dans refusée on regarde dans etude*/
                  EXCEPTION
                  When no_data_found then
                  begin
                        select codprocmc into new_codprocmc
                        from ETUDE
                        where numdossie = lst_Ancien.numdossie
                        and codprodui = lst_Ancien.codprodui; 
                        dbms_output.put_line('ETUDE : ' || lst_Ancien.numdossie || ' ' || new_codprocmc);
                  END;      
                End;
          END;  
     
     
        END LOOP;
     
    END;

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

Discussions similaires

  1. Requête select into qui ne retourne rien
    Par madevilts dans le forum PL/SQL
    Réponses: 6
    Dernier message: 15/10/2008, 16h25
  2. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  3. Requête qui ne retourne rien
    Par afrique dans le forum Administration
    Réponses: 4
    Dernier message: 02/10/2006, 18h19
  4. [MySQL] Requête qui ne retourne rien
    Par baleiney dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2006, 18h29
  5. SELECT qui ne retourne rien à cause d'anti-slash
    Par mikyfpc dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2005, 23h04

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