Документация Oracle CEIL
гласит:
Синтаксис
CEIL(n)
Назначение
CEIL
возвращает наименьшее целое число, большее или равное n
.
Так что функция CEIL(5.416579)
всегда будет возвращать 6
в Oracle.
Единственный способ, с помощью которого я вижу, что вы можете получить другой результат, - это если кто-то создал пользовательскую функцию CEIL
в вашей схеме, и она вызывается вместо встроенной функции:
(не делайте этого)
CREATE FUNCTION SCHEMA_NAME.CEIL(n NUMBER)
RETURN NUMBER
AS
i INTEGER := TRUNC( n * 100 );
BEGIN
IF i <> n * 100 THEN
RETURN (i + 1)/100;
ELSE
RETURN i/100;
END IF;
END;
/
Но даже тогда SELECT CEIL(5.416579) FROM DUAL
, кажется, использует глобальную встроенную функцию и возвращает 6
. Чтобы переопределить это, вы должны явно указать пакет:
SELECT SCHEMA_NAME.CEIL(5.416579) FROM DUAL
Выходы:
5.42
db <> fiddle
Убедитесь, что у вас нет другой функции с именем CEIL
, но без этого описываемое вами поведение будет невозможно.