DROP ROUTINE

DROP ROUTINE — удалить подпрограмму


Синтаксис

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

Описание

Команда DROP ROUTINE удаляет определение одной или нескольких существующих подпрограмм. Термин «подпрограмма» включает в себя агрегатные и обычные функции и процедуры. Описание параметров, а также дополнительные примеры и сведения см. на справочных страницах команд DROP AGGREGATE, DROP FUNCTION и DROP PROCEDURE.


Примечания

Правила поиска, использующиеся командой DROP ROUTINE фундаментально ничем не отличаются от правил DROP PROCEDURE; в частности DROP ROUTINE демонстрирует то же поведение, рассматривая список аргументов без маркеров режим_аргумента как соответствующий определению стандарта SQL, где аргументы OUT включаются в этот список. (DROP AGGREGATE и DROP FUNCTION этого не делают.)

В некоторых случаях, когда несколько подпрограмм разных видов имеют одно имя, DROP ROUTINE может не выполниться, выдав ошибку неоднозначности, тогда как более конкретная команда (DROP FUNCTION и т. д.) могла бы сработать. Эти проблемы тоже можно решить, задав список типов аргументов более подробно.

Эти правила поиска также действуют и для других команд, работающих с существующими подпрограммами, например ALTER ROUTINE и COMMENT ON ROUTINE.

Примеры

Удаление подпрограммы foo для типа integer:

DROP ROUTINE foo(integer);

Эта команда будет работать независимо от того, является ли foo агрегатом, функцией или процедурой.


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

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

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

  • Параметр IF EXISTS является расширением.

  • Возможность задавать режимы и имена аргументов является расширением, а правила поиска меняются, когда задаются режимы.

  • Пользовательские агрегатные функции являются расширением.


См. также

DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINE
Обратите внимание, что команды CREATE ROUTINE не существует.