Bonjour,


J'aimerais factoriser le code ci dessous :

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
  BEGIN
      SELECT TIERS.VILLE INTO ville_dest FROM TIERS, OL WHERE TIERS.SECTEUR_TIERS = OL.CODE_SECTEUR AND TIERS.MNEMO_TIERS = OL.MNEMO_CLIENT_CDE AND TIERS.RAISON_1_TIERS = OL.RAISON_DEST_1 AND OL.CODE_ADR_DEST = TIERS.CODE_ADRESSE AND OL.NO_OL = var_c.NO_OL;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          ville_dest := NULL;  
        WHEN TOO_MANY_ROWS THEN 
          DBMS_OUTPUT.put_line('probleme dans select ... into : trop de lignes pour la ville') ; 
    END ;
 
    BEGIN
      SELECT TIERS.NO_TELEPHONE INTO no_telephone FROM TIERS, OL WHERE TIERS.SECTEUR_TIERS = OL.CODE_SECTEUR AND TIERS.MNEMO_TIERS = OL.MNEMO_CLIENT_CDE AND TIERS.RAISON_1_TIERS = OL.RAISON_DEST_1 AND OL.CODE_ADR_DEST = TIERS.CODE_ADRESSE AND OL.NO_OL = var_c.NO_OL;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          no_telephone := NULL;  
        WHEN TOO_MANY_ROWS THEN 
          DBMS_OUTPUT.put_line('probleme dans select ... into : trop de lignes pour le numero de telephone') ; 
    END ;
 
    BEGIN
      SELECT TIERS.NO_PORTABLE INTO no_portable FROM TIERS, OL WHERE TIERS.SECTEUR_TIERS = OL.CODE_SECTEUR AND TIERS.MNEMO_TIERS = OL.MNEMO_CLIENT_CDE AND TIERS.RAISON_1_TIERS = OL.RAISON_DEST_1 AND OL.CODE_ADR_DEST = TIERS.CODE_ADRESSE AND OL.NO_OL = var_c.NO_OL;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          no_portable := NULL;  
        WHEN TOO_MANY_ROWS THEN 
          DBMS_OUTPUT.put_line('probleme dans select ... into : trop de lignes pour le numero de portable') ; 
    END ;
en faisant un SELECT sur tous les éléments concernés INTO toutes les variables concernées (rangées dans le même ordre)

Mais comment gérer les exception de NO_DATA_FOUND pour chaque variable (indépendemment des autres) ???

Merci d'avance