DROP FUNCTION#

DROP FUNCTION

DROP FUNCTION

DROP FUNCTION — удалить функцию

Синтаксис

DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
    [ CASCADE | RESTRICT ]

Описание

DROP FUNCTION удаляет определение существующей функции. Для выполнения этой команды пользователь должен быть владельцем функции. Типы аргументов функции должны быть указаны, так как существует возможность существования нескольких функций с одним и тем же именем и разными списками аргументов.

Параметры

IF EXISTS

Не генерировать ошибку, если функция не существует. В этом случае будет выдано уведомление.

name

Имя (опционально с указанием схемы) существующей функции. Если не указан список аргументов, имя должно быть уникальным в своей схеме.

argmode

Режим аргумента: IN, OUT, INOUT или VARIADIC. Если не указан, по умолчанию используется режим IN. Обратите внимание, что команда DROP FUNCTION не обращает внимания на аргументы OUT, так как только входные аргументы необходимы для определения идентификатора функции. Поэтому достаточно перечислить аргументы IN, INOUT и VARIADIC.

argname

Имя аргумента. Обратите внимание, что DROP FUNCTION на самом деле не обращает внимания на имена аргументов, поскольку для определения идентификатора функции требуются только типы данных аргументов.

argtype

Тип(ы) данных аргументов функции (опционально с указанием схемы), если они есть.

CASCADE

Автоматически удаляйте объекты, зависящие от функции (такие как операторы или триггеры), а также все объекты, зависящие от этих объектов (см. Раздел 5.14).

RESTRICT

Отказаться от удаления функции, если на нее ссылаются другие объекты. Это значение по умолчанию.

Примеры

Эта команда удаляет функцию квадратного корня:

DROP FUNCTION sqrt(integer);

Удаление нескольких функций одной командой:

DROP FUNCTION sqrt(integer), sqrt(bigint);

Если имя функции уникально в ее схеме, можно ссылаться на нее без списка аргументов:

DROP FUNCTION update_employee_salaries;

Обратите внимание, что это отличается от

DROP FUNCTION update_employee_salaries();

который относится к функции без аргументов, в то время как первый вариант может относиться к функции с любым количеством аргументов, включая ноль, при условии, что имя уникально.

Совместимость

Эта команда соответствует стандарту SQL, с расширениями Tantor BE:

  • Стандарт позволяет удалять только одну функцию за одну команду.

  • Опция IF EXISTS

  • Возможность указания режимов и имен аргументов