oracle语句的编译错误
我有下面的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
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 来自双重