oracle语句的编译错误

oracle语句的编译错误,oracle,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

我有下面的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
我似乎无法解决此语法错误。

为什么强制转换(…作为浮点(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)。

我认为必须在选择或“选择到”中使用CAST 例如 选择演员阵容(“2003年8月22日”为varchar2(30)) 来自双重

或 选择将(v_已故家庭_计数为浮动)转换为myfloat 来自双重