oracle中如何使用%进行计算
How to use % in oracle for calculation
我定义了一个逻辑,我想在其中使用 %
百分比作为计算结果,但在使用时出现错误。
逻辑如下
ELSIF V_ANCHOR_NONANCHOR = 'Anchor'
THEN
v_STD_REVISED_AMT := (V_STANDRD_AMT - v_OD_Discount) - ((V_STANDRD_AMT - v_OD_Discount * 10%));
错误是
Error(103,94): PLS-00103: Encountered the symbol "%" when expecting one of the following: ) , * & = - + < / > at in is mod remainder not rem => <an exponent (**)> <> or != or ~= >= <= <> and or like like2 like4 likec as between || member submultiset The symbol "%" was ignored.
请推荐使用方法。
更新
v_STD_REVISED_AMT := (V_STANDRD_AMT - v_OD_Discount) - ((V_STANDRD_AMT - v_OD_Discount * 0.1), (V_STANDRD_AMT - v_OD_Discount));
给出错误为
Error(108,22): PLS-00412: list of values not allowed as argument to this function or procedure
我想你只想乘以 0.1
即 10/100
表示 10%
如下:
(V_STANDRD_AMT - (v_OD_Discount * 0.1))
--更新
整个解决方案应该如下:
v_STD_REVISED_AMT := (V_STANDRD_AMT - v_OD_Discount)
- CASE WHEN V_ANCHOR_NONANCHOR = 'Anchor'
OR (M2_DATE_COL_VARIABLE < DATE '2019-03-31'
AND M2_DATE_COL_VARIABLE > DATE '2016-07-13')
THEN (V_STANDRD_AMT - v_OD_Discount * 10%)
ELSE 0
END;
我定义了一个逻辑,我想在其中使用 %
百分比作为计算结果,但在使用时出现错误。
逻辑如下
ELSIF V_ANCHOR_NONANCHOR = 'Anchor'
THEN
v_STD_REVISED_AMT := (V_STANDRD_AMT - v_OD_Discount) - ((V_STANDRD_AMT - v_OD_Discount * 10%));
错误是
Error(103,94): PLS-00103: Encountered the symbol "%" when expecting one of the following: ) , * & = - + < / > at in is mod remainder not rem => <an exponent (**)> <> or != or ~= >= <= <> and or like like2 like4 likec as between || member submultiset The symbol "%" was ignored.
请推荐使用方法。
更新
v_STD_REVISED_AMT := (V_STANDRD_AMT - v_OD_Discount) - ((V_STANDRD_AMT - v_OD_Discount * 0.1), (V_STANDRD_AMT - v_OD_Discount));
给出错误为
Error(108,22): PLS-00412: list of values not allowed as argument to this function or procedure
我想你只想乘以 0.1
即 10/100
表示 10%
如下:
(V_STANDRD_AMT - (v_OD_Discount * 0.1))
--更新
整个解决方案应该如下:
v_STD_REVISED_AMT := (V_STANDRD_AMT - v_OD_Discount)
- CASE WHEN V_ANCHOR_NONANCHOR = 'Anchor'
OR (M2_DATE_COL_VARIABLE < DATE '2019-03-31'
AND M2_DATE_COL_VARIABLE > DATE '2016-07-13')
THEN (V_STANDRD_AMT - v_OD_Discount * 10%)
ELSE 0
END;