Bonjour, j'ai une requête sql qui me retourne une valeur CHAR_VAL.
j'aimerais que cette requête me retourne une valeur par défaut si la requête ne retourne rien. Je dois impérativement récupérer la valeur de CHAR_VAL dans une variable dans la suite de mon traitement.

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
SELECT ACCH2.CHAR_VAL
    FROM CI_ACCT_CHAR ACCH1, CI_ACCT_CHAR ACCH2
 WHERE ACCH1.ACCT_ID = '5952073892'
     AND ACCH1.CHAR_TYPE_CD = 'NUMGRC'
     AND (ACCH1.ADHOC_CHAR_VAL) = '2-2BCCSCO'
     AND ACCH1.EFFDT = (SELECT MAX(ACCH3.EFFDT)
        FROM CI_ACCT_CHAR ACCH3
        WHERE ACCH3.ACCT_ID = ACCH1.ACCT_ID
        AND ACCH3.CHAR_TYPE_CD = ACCH1.CHAR_TYPE_CD
        AND ACCH3.EFFDT <= '16-03-2016')
     AND ACCH2.ACCT_ID = '5952073892'
     AND ACCH2.CHAR_TYPE_CD = 'TYP-PROF'
     AND ACCH2.CHAR_VAL IN ('OH ', 'S ET C ')
     AND ACCH2.EFFDT = (SELECT MAX(ACCH4.EFFDT)
        FROM CI_ACCT_CHAR ACCH4
        WHERE ACCH4.ACCT_ID = ACCH2.ACCT_ID
        AND ACCH4.CHAR_TYPE_CD = ACCH2.CHAR_TYPE_CD
        AND ACCH4.EFFDT <= '16-03-2016');
J'ai modifié la requête comme ceci :

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
SELECT ACCH2.CHAR_VAL
    FROM CI_ACCT_CHAR ACCH1, CI_ACCT_CHAR ACCH2
 WHERE CCH1.ACCT_ID = '5952073892'
     AND ACCH1.CHAR_TYPE_CD = 'NUMGRC'
     AND (ACCH1.ADHOC_CHAR_VAL) = '2-2BCCSCO'
     AND ACCH1.EFFDT = (SELECT MAX(ACCH3.EFFDT)
        FROM CI_ACCT_CHAR ACCH3
        WHERE ACCH3.ACCT_ID = ACCH1.ACCT_ID
        AND ACCH3.CHAR_TYPE_CD = ACCH1.CHAR_TYPE_CD
        AND ACCH3.EFFDT <= '16-03-2016')
     AND ACCH2.ACCT_ID(+) = ACCH1.ACCT_ID
     AND ACCH2.CHAR_TYPE_CD(+) = 'PROF'
     AND ACCH2.CHAR_VAL(+) IN ('OH ', 'S ET C ')
   AND (ACCH2.EFFDT(+) <> ' '
     AND ACCH2.EFFDT = (
        SELECT MAX(ACCH4.EFFDT)
        FROM CI_ACCT_CHAR ACCH4
        WHERE ACCH4.ACCT_ID = ACCH2.ACCT_ID(+)
        AND ACCH4.CHAR_TYPE_CD = ACCH2.CHAR_TYPE_CD(+)
        AND ACCH4.EFFDT <= '16-03-2016')
 
        );
j'ai une erreur ORA-01705: impossible d'indiquer une jointure externe sur une colonne de corrélation
Je suis un peu bloqué pour l'instant. Comment faire ?
Merci d'avance