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
не существует.