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

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

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

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

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

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

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

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

6.1.100. DO

DO — выполнение анонимного блока кода

Синтаксис

DO [ LANGUAGE lang_name ] code

Описание

DO выполняет анонимный блок кода или, другими словами, временную анонимную функцию на процедурном языке.

Блок кода обрабатывается так, как если бы он был телом функции без параметров, возвращающей void. Он разбирается и выполняется один раз.

Необязательное предложение LANGUAGE может быть написано как до, так и после блока кода.

Параметры

code

Код процедурного языка для выполнения. Он должен быть указан как строковый литерал, как и в CREATE FUNCTION. Рекомендуется использовать долларовые кавычки.

lang_name

Имя процедурного языка, на котором написан код. Если опущено, по умолчанию используется plpgsql.

Примечания

Используемый процедурный язык уже должен быть установлен в текущую базу данных с помощью команды CREATE EXTENSION. Язык plpgsql устанавливается по умолчанию, но другие языки — нет.

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

Если DO выполняется в блоке транзакции, то процедурный код не может выполнять операторы управления транзакциями. Операторы управления транзакциями разрешены только если DO выполняется в собственной транзакции.

Примеры

Предоставить все привилегии на все представления в схеме public роли webuser:

DO $$DECLARE r record;
BEGIN
    FOR r IN SELECT table_schema, table_name FROM information_schema.tables
             WHERE table_type = 'VIEW' AND table_schema = 'public'
    LOOP
        EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser';
    END LOOP;
END$$;

Совместимость

Стандарт SQL не содержит оператора DO.

См. также

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

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