ROUNDUP 函数给出错误作为 oracle 中的无效标识符
ROUNDUP Function giving error as Invalid Identifier in oracle
我想在我的 oracle 过程中使用 excel 的 ROUNDUP
公式。但是在使用时出现错误
ROUNDUP is Invalid Identifier.
下面是我的代码
SELECT ROUNDUP(15/30) FROM DUAL;
请建议我如何使用它
你不能,ROUNDUP
不是 Oracle 函数(这就是你得到无效标识符错误的原因)。
您可以改为使用 CEIL
。
SELECT CEIL(15/30) FROM DUAL;
| CEIL(15/30) |
| ----------: |
| 1 |
如果您想四舍五入到给定的精度,那么您可以创建一个用户定义的函数:
CREATE FUNCTION roundup(
value IN NUMBER,
precision IN PLS_INTEGER DEFAULT 0
) RETURN NUMBER DETERMINISTIC
IS
BEGIN
IF precision = 0 THEN
RETURN CEIL( value );
ELSE
RETURN CEIL( value * POWER( 10, precision ) ) / POWER( 10, precision );
END IF;
END;
/
然后:
SELECT ROUNDUP(0.56789),
ROUNDUP(0.56789, 1),
ROUNDUP(0.56789, 2),
ROUNDUP(0.56789, -1)
FROM DUAL;
输出:
ROUNDUP(0.56789) | ROUNDUP(0.56789,1) | ROUNDUP(0.56789,2) | ROUNDUP(0.56789,-1)
---------------: | -----------------: | -----------------: | ------------------:
1 | .6 | .57 | 10
db<>fiddle here
我想在我的 oracle 过程中使用 excel 的 ROUNDUP
公式。但是在使用时出现错误
ROUNDUP is Invalid Identifier.
下面是我的代码
SELECT ROUNDUP(15/30) FROM DUAL;
请建议我如何使用它
你不能,ROUNDUP
不是 Oracle 函数(这就是你得到无效标识符错误的原因)。
您可以改为使用 CEIL
。
SELECT CEIL(15/30) FROM DUAL;
| CEIL(15/30) | | ----------: | | 1 |
如果您想四舍五入到给定的精度,那么您可以创建一个用户定义的函数:
CREATE FUNCTION roundup(
value IN NUMBER,
precision IN PLS_INTEGER DEFAULT 0
) RETURN NUMBER DETERMINISTIC
IS
BEGIN
IF precision = 0 THEN
RETURN CEIL( value );
ELSE
RETURN CEIL( value * POWER( 10, precision ) ) / POWER( 10, precision );
END IF;
END;
/
然后:
SELECT ROUNDUP(0.56789),
ROUNDUP(0.56789, 1),
ROUNDUP(0.56789, 2),
ROUNDUP(0.56789, -1)
FROM DUAL;
输出:
ROUNDUP(0.56789) | ROUNDUP(0.56789,1) | ROUNDUP(0.56789,2) | ROUNDUP(0.56789,-1) ---------------: | -----------------: | -----------------: | ------------------: 1 | .6 | .57 | 10
db<>fiddle here