DROP ROUTINE
Эта страница переведена при помощи нейросети GigaChat.
DROP ROUTINE
— удаление процедуры.
Синтаксис
DROP ROUTINE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
[ CASCADE | RESTRICT ]
Описание
DROP ROUTINE
удаляет определение одной или нескольких существующих процедур. Термин «процедура» включает агрегатные функции, обычные функции и процедуры. Более подробная информация о параметрах, дополнительных примерах приведена в разделах DROP AGGREGATE, DROP FUNCTION и DROP PROCEDURE.
Примечания
Механизм поиска и выбора процедур в DROP ROUTINE
работает аналогично команде DROP PROCEDURE
. В частности, если список аргументов указан без модификаторов (IN
, OUT
и другие), то 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, однако PostgreSQL предоставляет расширения:
- Стандарт разрешает удалять только одну процедуру за раз.
- Параметр
IF EXISTS
является расширением. - Возможность указать режимы и имена аргументов является расширением, а правила поиска различаются при задании режимов.
- Пользовательские агрегатные функции являются расширением.
Обратите внимание, что нет команды CREATE ROUTINE
.
Смотрите также
DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINE