2009-09-28 8 views
0

J'ai l'instruction Oracle suivante qui provoque des erreurs de compilation.erreur de compilation avec l'instruction oracle

v_percent_deceased_households := CASE 
WHEN NVL(v_total_households, 0) > 0 THEN 
    (CAST(NVL(v_deceased_households_count, 0) AS FLOAT(53)) 
    /
    CAST(NVL(v_total_households, 0) AS FLOAT(53))) * 100 
    ELSE 0 
     END; 

Les erreurs sont:

Erreur:

PLS-00103: Encountered the symbol "(" when expecting one of the following:.) @ % 
     The symbol ")" was substituted for "(" to continue. 
Line: 317 
Text: (CAST(NVL(v_deceased_households_count, 0) AS FLOAT(53))/CAST(NVL(v_total_households, 0) AS FLOAT(53))) * 100 

Error: PLS-00103: Encountered the symbol "(" when expecting one of the following:.) @ % 
Line: 317 
Text: (CAST(NVL(v_deceased_households_count, 0) AS FLOAT(53))/CAST(NVL(v_total_households, 0) AS FLOAT(53))) * 100 

Je ne peux pas semble résoudre cette erreur de syntaxe ..

Répondre

0

Pourquoi CAST (... AS FLOAT (53)) ? Pourquoi pas juste:

v_percent_deceased_households := CASE 
WHEN v_total_households > 0 THEN 
    (NVL(v_deceased_households_count, 0)/v_total_households) * 100 
    ELSE 0 
     END; 

(J'ai également supprimé des NVL redondantes).

0

Je crois que CAST doit être utilisé dans une sélection ou 'select into' Par exemple select cast ('22 -août 2003' AS varchar2 (30)) du double;

ou sélectionnez cast (v_deceased_households_count AS float) dans myfloat à partir du dual;

Questions connexes