round
Содержание
ROUND()
Версии сервера
0.9 | 1.0 | 1.5.3 | 1.5.4 | 1.5.5 | 2.0 | 2.1 | 2.5 | 3.0 | |
---|---|---|---|---|---|---|---|---|---|
Как UDF | Да | Да | Да | Да | Да | Да | - | - | - |
Как встроенная функция | - | - | - | - | - | - | Да | Да | Да |
Доступно в
Формат
ROUND( < аргумент > , < знаков > )
Аргумент | Описание |
---|---|
< аргумент > | Числовое выражение |
< знаков > | INTEGER |
Возвращает | INTEGER, BIGINT или DOUBLE |
Описание
Функция ROUND() возвращает результат округления числа < аргумент > до < знаков > знаков после запятой в ближайшую сторону. Если число < знаков > отрицательное, то округление идет до < знаков > знаков перед запятой.
В Firebird версии младше 2.1 для того, чтобы пользоваться этой функцией, ее небходимо подключить к базе данных как UDF.
Объявление
1. В Firebird версии младше 2.1 функция объявляется как UDF в внешнем модуле «ib_udf».
DECLARE EXTERNAL FUNCTION ROUND INTEGER BY DESCRIPTOR, INTEGER BY DESCRIPTOR RETURNS PARAMETER 2 ENTRY_POINT 'fbround' MODULE_NAME 'fbudf';
2. В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как:
DECLARE EXTERNAL FUNCTION ROUND INTEGER BY DESCRIPTOR, INTEGER BY DESCRIPTOR RETURNS PARAMETER 2 ENTRY_POINT 'fbround' MODULE_NAME 'SYSTEM';
Пример
SELECT ROUND(1111.23456, 2), ROUND(1.23456, 0), ROUND(1111.23456, -2) FROM RDB$DATABASE
См. также
Источник
langref.pdf
round.txt · Последнее изменение: 2013/10/24 14:46 — 212.42.106.226
Обсуждение
У меня файребирд версии 2.0 подключаю функцию как в варианте 2 (встроенная)
делаю запрос из примера
в результате возвращается ошибка
Invalid token. invalid request BLR at offset 68. function ROUND is not defined. module name or entrypoint could not be found.
думаю там опечатка, второй вариант для 2,1 и выше.
Думаю, опечатка - ВОЗРАЩАЕМОЕ ЗНАЧЕНИЕ НЕ INTEGER