oracle语句的编译错误

时间:2009-09-28 16:40:43

标签: oracle

我有以下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;

错误是:

错误:

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

我似乎无法解决此语法错误..

2 个答案:

答案 0 :(得分:0)

为什么CAST(...... AS FLOAT(53))?为什么不呢:

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

(我也删除了一些冗余的NVL)。

答案 1 :(得分:0)

我相信CAST必须用于选择或'选择进入' 例如 select cast('22 -Aug-2003'AS varchar2(30)) 来自双重;

或 选择cast(v_deceased_households_count AS float)到myfloat中 来自双重;