DROP FUNCTION

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


Синтаксис

DROP FUNCTION [ IF EXISTS ] имя ( [ [ режим_аргумента ] [ имя_аргумента ] тип_аргумента [, ...] ] ) ] [, ...]
    [ CASCADE | RESTRICT ]

Описание

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


Параметры

IF EXISTS

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

имя

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

режим_аргумента

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

имя_аргумента

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

тип_аргумента

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

CASCADE

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

RESTRICT

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


Примеры

Эта команда удаляет функцию, вычисляющую квадратный корень:

DROP FUNCTION sqrt(integer);

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

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

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

DROP FUNCTION update_employee_salaries;

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

DROP FUNCTION update_employee_salaries();

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


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

Команда DROP FUNCTION соответствует стандарту SQL со следующими расширениями QHB:

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

  • Параметр IF EXISTS

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


См. также

CREATE FUNCTION, ALTER FUNCTION, DROP PROCEDURE, DROP ROUTINE