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