×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.22. ALTER PROCEDURE

6.1.22. ALTER PROCEDURE

ALTER PROCEDURE — изменение определения процедуры

Синтаксис

ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    action [ ... ] [ RESTRICT ]
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    SET SCHEMA new_schema
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    [ NO ] DEPENDS ON EXTENSION extension_name

где action может быть одним из:

    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    SET configuration_parameter { TO | = } { value | DEFAULT }
    SET configuration_parameter FROM CURRENT
    RESET configuration_parameter
    RESET ALL

Описание

Команда ALTER PROCEDURE изменяет определение процедуры.

Чтобы использовать ALTER PROCEDURE, вы должны быть владельцем процедуры. Чтобы изменить схему процедуры, вы также должны иметь право CREATE в новой схеме. Чтобы изменить владельца, вы должны иметь возможность выполнить SET ROLE для новой роли-владельца, и эта роль должна иметь право CREATE в схеме процедуры. (Эти ограничения гарантируют, что изменение владельца не позволит сделать ничего такого, что нельзя было бы сделать удалением и повторным созданием процедуры. Однако суперпользователь может изменить владельца любой процедуры в любом случае.)

Параметры

name

Имя (возможно, с указанием схемы) существующей процедуры. Если список аргументов не указан, имя должно быть уникальным в своей схеме.

argmode

Режим аргумента: IN, OUT, INOUT или VARIADIC. Если опущен, по умолчанию используется IN.

argname

Имя аргумента. Обратите внимание, что ALTER PROCEDURE фактически не учитывает имена аргументов, поскольку для определения идентификатора процедуры используются только типы данных аргументов.

argtype

Тип(ы) данных аргументов процедуры (опционально с указанием схемы), если они есть. Подробности о том, как процедура ищется с использованием типа(ов) данных аргументов, см. в DROP PROCEDURE.

new_name

Новое имя процедуры.

new_owner

Новый владелец процедуры. Обратите внимание, что если процедура помечена как SECURITY DEFINER, она впоследствии будет выполняться от имени нового владельца.

new_schema

Новая схема для процедуры.

extension_name

Эта форма помечает процедуру как зависимую от расширения или, если указано NO, как больше не зависящую от этого расширения. Процедура, помеченная как зависимая от расширения, удаляется при удалении расширения, даже если не указано каскадное удаление. Процедура может зависеть от нескольких расширений и будет удалена при удалении любого из них.

[ EXTERNAL ] SECURITY INVOKER
[ EXTERNAL ] SECURITY DEFINER

Изменяет, является ли процедура определителем безопасности или нет. Ключевое слово EXTERNAL игнорируется для соответствия стандарту SQL. Подробнее об этой возможности см. в разделе CREATE PROCEDURE.

configuration_parameter
value

Добавляет или изменяет присваивание параметра конфигурации, которое должно быть выполнено при вызове процедуры. Если value — это DEFAULT или, что равносильно, используется RESET, то установка на уровне процедуры удаляется, так что процедура выполняется со значением, присутствующим в её окружении. Используйте RESET ALL для очистки всех установок на уровне процедуры. SET FROM CURRENT сохраняет значение параметра, которое действует на момент выполнения ALTER PROCEDURE, в качестве значения, которое должно быть применено при входе в процедуру.

См. SET и Глава 3.4 для получения дополнительной информации о допустимых именах параметров и их значениях.

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, которое в Digital Q.DataBase является необязательным.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению