ALTER PROCEDURE
ALTER PROCEDURE — изменить определение процедуры
Синтаксис
ALTER PROCEDUREимя[ ( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) ]действие[ ... ] [ RESTRICT ] ALTER PROCEDUREимя[ ( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) ] RENAME TOновое_имяALTER PROCEDUREимя[ ( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) ] OWNER TO {новый_владелец| CURRENT_USER | SESSION_USER } ALTER PROCEDUREимя[ ( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) ] SET SCHEMAновая_схемаALTER PROCEDUREимя[ ( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) ] DEPENDS ON EXTENSIONимя_расширенияГдедействиеможет быть следующим: [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER SETпараметр_конфигурации{ TO | = } {значение| DEFAULT } SETпараметр_конфигурацииFROM CURRENT RESETпараметр_конфигурацииRESET ALL
Описание
ALTER PROCEDURE изменяет определение процедуры.
Выполнить ALTER PROCEDURE может только владелец процедуры. Чтобы сменить схему процедуры, необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, требуется также быть непосредственным или опосредованным членом новой роли, а эта роль должна иметь право CREATE в схеме представления. (С таким ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать процедуру. Однако суперпользователь может сменить владельца процедуры в любом случае.)
Параметры
- имя
- Имя существующей процедуры (возможно, дополненное схемой). Если список аргументов не указан, имя процедуры должно быть уникальным в её схеме. 
- режим_аргумента
- Режим аргумента: - INили- VARIADIC. По умолчанию подразумевается- IN.
- имя_аргумента
- Имя аргумента. Заметьте, что на самом деле - ALTER PROCEDUREне обращает внимание на имена аргументов, так как для однозначной идентификации процедуры достаточно только типов аргументов.
- тип_аргумента
- Тип данных аргументов процедуры (возможно, дополненный именем схемы), если таковые имеются. 
- новое_имя
- Новое имя процедуры. 
- новый_владелец
- Новый владелец процедуры. Заметьте, что если процедура помечена как - SECURITY DEFINER, в дальнейшем она будет выполняться от имени нового владельца.
- новая_схема
- Новая схема процедуры. 
- имя_расширения
- Имя расширения, от которого будет зависеть процедура. 
- [EXTERNAL] SECURITY INVOKER- [EXTERNAL] SECURITY DEFINER
- Устанавливает, является ли процедура определяющей контекст безопасности. Ключевое слово - EXTERNALигнорируется для соответствия стандарту SQL. Подробнее это свойство описано в CREATE PROCEDURE.
- параметр_конфигурации- значение
- Добавляет или изменяет установку параметра конфигурации, выполняемую при вызове процедуры. Если задано - значение- DEFAULTили, что равнозначно, выполняется действие- RESET, локальное переопределение для процедуры удаляется и процедура выполняется со значением, установленным в окружении. Для удаления всех установок параметров для данной процедуры укажите- RESET ALL.- SET FROM CURRENTустанавливает для последующих вызовов процедуры значение параметра, действующее в момент выполнения- ALTER PROCEDURE.- За подробными сведениями об именах и значениях параметров обратитесь к SET и Главе 18. 
- RESTRICT
- Игнорируется для соответствия стандарту SQL. 
Примеры
Переименование процедуры insert_data с двумя аргументами типа integer в insert_record: 
ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;
Смена владельца процедуры insert_data с двумя аргументами типа integer на joe: 
ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe;
Смена схемы процедуры insert_data с двумя аргументами типа integer на accounting: 
ALTER PROCEDURE insert_data(integer, integer) SET SCHEMA accounting;
Обозначение процедуры insert_data(integer, integer) как зависимой от расширения myext: 
ALTER PROCEDURE insert_data(integer, integer) DEPENDS ON EXTENSION myext;
Изменение пути поиска, который устанавливается автоматически для процедуры:
ALTER PROCEDURE check_password(text) SET search_path = admin, pg_temp;
Отмена автоматического определения search_path для процедуры: 
ALTER PROCEDURE check_password(text) RESET search_path;
Теперь процедура будет выполняться с тем путём, который задан в момент вызова.
Совместимость
Этот оператор частично совместим с оператором ALTER PROCEDURE в стандарте SQL. Стандарт позволяет изменить больше свойств процедуры, но не даёт возможности переименовать процедуру, сделать процедуру определяющей контекст безопасности, связать с процедурой значения параметров конфигурации или изменить владельца, схему или характеристику изменчивости процедуры. Также стандарт требует наличия ключевого слова RESTRICT, но в Postgres Pro оно необязательное.