我有以下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
我似乎无法解决此语法错误..
答案 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中 来自双重;