Инструменты пользователя

Инструменты сайта


abs

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
abs [2010/01/10 16:50]
peaktop Стала встроенной в 2.1, не в 2.0
abs [2010/01/10 17:16] (текущий)
peaktop Стала встроенной в 2.1, не в 2.0
Строка 1: Строка 1:
 +====== ABS() ======
  
 +
 +
 +
 +===== Версии сервера =====
 +^                       ^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.1 ^ 2.5 ^ 3.0 ^
 +^Как [[UDF]] ​           |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  -  |  -  |  -  |
 +^Как встроенная функция |  -  |  -  |  -  |  -  |  -  |  -  |  Да  |  Да  |  Да  |
 +
 +
 +===== Доступно в =====
 +[[raznovidnosti_jazyka_sql|DSQL]], ​  ​[[raznovidnosti_jazyka_sql|ISQL]], ​  ​[[raznovidnosti_jazyka_sql|PSQL]]
 +
 +
 +===== Формат =====
 +<​code>​ABS( < аргумент > )</​code>​
 +^ Аргумент ^ Описание ^
 +| < аргумент >  | Любой тип данных,​ приводимый к [[tipy_dannyx|DOUBLE PRECISION]] ​ |
 +| Возвращает | [[tipy_dannyx|DOUBLE PRECISION]] ​ |
 +
 +===== Описание =====
 +Функция ABS возвращает абсолютное значение числа, переданного в качестве параметра < аргумент >.
 +
 +:!: В Firebird версии младше 2.1 для того, чтобы пользоваться этой функцией,​ ее небходимо подключить к базе данных как [[UDF]].
 +
 +===== Объявление =====
 +1. В Firebird версии младше 2.1 функция объявляется как [[UDF]] в внешнем модуле "​ib_udf"​.
 +<code sql>
 +DECLARE EXTERNAL FUNCTION ABS
 +  DOUBLE PRECISION
 +RETURNS
 +  DOUBLE PRECISION BY VALUE
 +ENTRY_POINT "​IB_UDF_abs"​ MODULE_NAME "​ib_udf";​
 +</​code>​
 +
 +2. В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как:
 +<code sql>
 +DECLARE EXTERNAL FUNCTION ABS
 +  DOUBLE PRECISION
 +RETURNS
 +  DOUBLE PRECISION BY VALUE
 +ENTRY_POINT "​IB_UDF_abs"​ MODULE_NAME SYSTEM;
 +</​code>​
 +
 +
 +===== Пример =====
 +Допустим,​ существует таблица CUSTOMERS с доменами ID [[tipy_dannyx|INTEGER]] и AMOUNT [[tipy_dannyx|DOUBLE PRECISION]],​ который может быть отрицательным.
 +
 +Требуется выбрать из таблицы все записи,​ указав абсолютное значение домена AMOUNT.
 +
 +1) [[raznovidnosti_jazyka_sql|DSQL]], ​  ​[[raznovidnosti_jazyka_sql|ISQL]]
 +<code sql>
 +SELECT ABS(C.AMOUNT)
 +FROM   ​CUSTOMERS C
 +</​code>​
 +
 +2) [[raznovidnosti_jazyka_sql|PSQL]]
 +<code sql>
 +SET TERM !!!;
 +
 +CREATE OR ALTER PROCEDURE CUST_AMOUNT RETURNS (
 +   ​CUST_ID INTEGER
 +  ,​AMOUNT ​ DOUBLE PRECISION
 +)AS
 +BEGIN
 +  FOR
 +    SELECT C.ID, C.AMOUNT
 +    FROM   ​CUSTOMERS C
 +    INTO   :​CUST_ID,​ :AMOUNT
 +  DO
 +    BEGIN
 +    AMOUNT = ABS(:​AMOUNT);​
 +    SUSPEND;
 +    END
 +END !!!
 +
 +SET TERM ; !!!
 +</​code>​
 +
 +
 +===== См. также =====
 +[[UDF]], [[vstroennye_funkcii|Встроенные функции]]
 +
 +===== Источник =====
 +langref.pdf
abs.txt · Последние изменения: 2010/01/10 17:16 — peaktop