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 агрегатом, функцией или процедурой.
Совместимость #
Эта команда соответствует стандарту SQL, но дополнена следующими расширениями Postgres Pro:
Стандарт позволяет удалять с помощью этой команды только одну подпрограмму.
Указание
IF EXISTSявляется расширением.Возможность указывать режимы и имена аргументов является расширением, а правила поиска при указании режимов могут меняться.
Поддержка пользовательских агрегатных функций относится к расширениям.
См. также
DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINEЗаметьте, что также отсутствует команда CREATE ROUTINE.