Bonjour,

Je veux faire une sélection dans la table "test" comme dans le script plus bas. Puis s'il n'existe pas alors je fais un deuxième select dans la table test_alias et là s'il ne trouve pas alors il devrait lever l'exception.

Mais puisqu'il n'existe pas dans le premier select alors il lève l'erreur unhandled exception, je ne comprends pas ! Comment faire !

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
declare
 
reject exception;
vo_error_msg varchar2(300);
vo_id varchar2(3);
vi_name varchar2(200);
 
  BEGIN
 
  vi_name:='Test';
 
      SELECT id
        INTO vo_id
        FROM test
       WHERE UPPER(name) = UPPER(vi_name)
         AND cancelled = 'N';
 
   IF vo_id IS NULL THEN
     SELECT id
        INTO vo_id
        FROM test_alias
       WHERE UPPER(alias_name) = UPPER(vi_name)
         AND cancelled = 'N';
   END IF;
 
 
      EXCEPTION
      WHEN NO_DATA_FOUND THEN
         vo_error_msg := 'Invalid : Test id (' || vi_name|| ') cancelled, in test or in test_alias';
         RAISE reject;
 
   END;