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