DROP ROUTINE#
DROP ROUTINE
DROP ROUTINE — удалить процедуру
Синтаксис
DROP ROUTINE [ IF EXISTS ]name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
Описание
DROP ROUTINE
удаляет определение одной или нескольких существующих процедур. Термин “процедура” включает в себя агрегатные функции, обычные функции и процедуры. См. разделы DROP AGGREGATE, DROP FUNCTION и DROP PROCEDURE для описания параметров, дополнительных примеров и подробностей.
Примечания
Правила поиска, используемые командой DROP ROUTINE
, в основном такие же, как и для команды DROP PROCEDURE
; в частности, DROP ROUTINE
разделяет поведение этой команды, рассматривая список аргументов, в котором отсутствуют маркеры argmode
, как возможно использующий определение аргументов OUT
в соответствии со стандартом SQL. (DROP AGGREGATE
и DROP FUNCTION
этого не делают).
В некоторых случаях, когда одно и то же имя используется для процедур разных типов, возможно, что DROP ROUTINE
не сможет выполниться из-за ошибки неоднозначности, в то время как более конкретная команда (DROP FUNCTION
и т. д.) сработала бы. Указание более точного списка типов аргументов также позволит решить такие проблемы.
Эти правила поиска также используются другими командами, которые действуют на существующие процедуры, такие как ALTER ROUTINE
и COMMENT ON ROUTINE
.
Примеры
Чтобы удалить процедуру foo
для типа
integer
:
DROP ROUTINE foo(integer);
Эта команда будет работать независимо от того, является ли foo
агрегатом, функцией или процедурой.
Совместимость
Эта команда соответствует стандарту SQL, с расширениями Tantor BE:
Стандарт позволяет удалять только одну процедуру за одну команду.
Опция
IF EXISTS
является расширением.Возможность указания режимов и имен аргументов является расширением, и правила поиска отличаются, когда указаны режимы.
Пользовательские агрегатные функции являются расширением.
См. также
DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINE
Обратите внимание, что команда CREATE ROUTINE
отсутствует.