ACOS()

Версии сервера

0.91.01.5.31.5.41.5.52.02.12.53.0
Как UDFДаДаДаДаДаДа---
Как встроенная функция------ДаДаДа

Доступно в

DSQL, ISQL, PSQL

Формат

ACOS( < аргумент > )
АргументОписание
< аргумент >Любой тип данных, приводимый к DOUBLE PRECISION в интервале от -1..+1
ВозвращаетDOUBLE PRECISION арккосинус числа в радианах

Описание

Функция ACOS возвращает(в радинах) арккосинус числа, переданного в качестве параметра < аргумент >, значение которого должно находиться в интервале -1..1.

⚠️ В Firebird версии младше 2.1 для того, чтобы пользоваться этой функцией, ее небходимо подключить к базе данных как UDF.

Объявление

  1. В Firebird версии младше 2.1 функция объявляется как UDF в внешнем модуле “ib_udf”.
DECLARE EXTERNAL FUNCTION ACOS
  DOUBLE PRECISION
RETURNS
  DOUBLE PRECISION BY VALUE
ENTRY_POINT "IB_UDF_acos" MODULE_NAME "ib_udf";
  1. В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как:
DECLARE EXTERNAL FUNCTION ACOS
  DOUBLE PRECISION
RETURNS
  DOUBLE PRECISION BY VALUE
ENTRY_POINT "acos" MODULE_NAME SYSTEM;

Пример

Допустим, существует таблица WND_PARAMS с доменами ID INTEGER, DIAG DOUBLE PRECISION - диагональ прямоугольника и COS_DIAG DOUBLE PRECISION, который хранит отношение ширины прямоугольника к его диагонали (математически - косинус угла наклона диагонали).

Требуется выбрать из таблицы все записи, указав ширину прямоугольника.

  1. DSQL, ISQL
SELECT W.ID, (W.DIAG * ACOS(W.COS_DIAG)) AS WIDTH
FROM   WND W
  1. PSQL
SET TERM !!!;

CREATE OR ALTER PROCEDURE WND_WIDTHS RETURNS (
   W_ID     INTEGER
  ,W_WIDTH  DOUBLE PRECISION
)AS
  DECLARE VARIABLE P_DIAG     DOUBLE PRECISION;
  DECLARE VARIABLE P_COS_DIAG DOUBLE PRECISION;
BEGIN
  FOR
    SELECT W.ID, W.DIAG, W.COS_DIAG
    FROM   WND W
    INTO   :W_ID, :P_DIAG, :P_COS_DIAG
  DO
  BEGIN
    W_WIDTH = :W_DIAG * ACOS(:P_COS_DIAG);
    SUSPEND;
  END
END !!!

SET TERM ; !!!

См. также

UDF, Встроенные функции

Источник

langref.pdf

Обсуждение