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

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


asin

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
asin [2010/01/10 16:52]
peaktop Стала встроенной в 2.1, не в 2.0
asin [2010/01/10 17:18] (текущий)
Строка 1: Строка 1:
 +====== ASIN() ======
  
 +
 +
 +
 +===== Версии сервера =====
 +^                       ^ 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>​ASIN( < аргумент > )</​code>​
 +^ Аргумент ^ Описание ^
 +| < аргумент >  | Любой тип данных,​ приводимый к [[tipy_dannyx|DOUBLE PRECISION]] в интервале от -1..+1 ​ |
 +| Возвращает | [[tipy_dannyx|DOUBLE PRECISION]] арккосинус числа в радианах |
 +
 +
 +===== Описание =====
 +Функция ASIN возвращает(в радинах) арксинус числа, переданного в качестве параметра < аргумент >, значение которого должно находиться в интервале -1..1.
 +
 +:!: В Firebird версии младше 2.1 для того, чтобы пользоваться этой функцией,​ ее небходимо подключить к базе данных как [[UDF]].
 +
 +
 +
 +===== Объявление =====
 +1. В Firebird версии младше 2.1 функция объявляется как [[UDF]] в внешнем модуле "​ib_udf"​.
 +<code sql>
 +DECLARE EXTERNAL FUNCTION ASIN
 +  DOUBLE PRECISION
 +RETURNS
 +  DOUBLE PRECISION BY VALUE
 +ENTRY_POINT "​IB_UDF_asin"​ MODULE_NAME "​ib_udf";​
 +</​code>​
 +
 +2. В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как:
 +<code sql>
 +DECLARE EXTERNAL FUNCTION ASIN
 +  DOUBLE PRECISION
 +RETURNS
 +  DOUBLE PRECISION BY VALUE
 +ENTRY_POINT "​asin"​ MODULE_NAME SYSTEM;
 +</​code>​
 +
 +
 +
 +
 +
 +===== Пример =====
 +Допустим,​ существует таблица WND_PARAMS с доменами ID [[tipy_dannyx|INTEGER]],​ DIAG  [[tipy_dannyx|DOUBLE PRECISION]] - диагональ прямоугольника и  SIN_DIAG [[tipy_dannyx|DOUBLE PRECISION]],​ который хранит отношение высоты прямоугольника к его диагонали (математически - синус угла наклона диагонали к ширине). ​
 +
 +Требуется выбрать из таблицы все записи,​ указав высоту прямоугольника.
 +
 +1) [[raznovidnosti_jazyka_sql|DSQL]], ​  ​[[raznovidnosti_jazyka_sql|ISQL]]
 +<code sql>
 +SELECT W.ID, (W.DIAG * ASIN(W.SIN_DIAG)) AS HEIGHT
 +FROM   WND W
 +</​code>​
 +
 +2) [[raznovidnosti_jazyka_sql|PSQL]]
 +<code sql>
 +SET TERM !!!;
 +
 +CREATE OR ALTER PROCEDURE WND_HEIGHTS RETURNS (
 +   ​W_ID ​    ​INTEGER
 +  ,W_HEIGHT DOUBLE PRECISION
 +)AS
 +  DECLARE VARIABLE P_DIAG ​    ​DOUBLE PRECISION;
 +  DECLARE VARIABLE P_SIN_DIAG DOUBLE PRECISION;
 +BEGIN
 +  FOR
 +    SELECT W.ID, W.DIAG, W.COS_DIAG
 +    FROM   WND W
 +    INTO   :​W_ID,​ :P_DIAG, :P_SIN_DIAG
 +  DO
 +  BEGIN
 +    W_HEIGHT = :W_DIAG * ASIN(:​P_SIN_DIAG);​
 +    SUSPEND;
 +  END
 +END !!!
 +
 +SET TERM ; !!!
 +</​code>​
 +
 +
 +===== См. также =====
 +[[UDF]], [[vstroennye_funkcii|Встроенные функции]]
 +
 +===== Источник =====
 +langref.pdf
asin.txt · Последние изменения: 2010/01/10 17:18 (внешнее изменение)