Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Параметризованные запросы позволяют хранить заполнители в SQL и предоставлять значения во время выполнения. Расширение PostgreSQL привязывает эти значения в качестве параметров запроса; Он не вставляет значения в текст SQL.
Используйте эту страницу, если вы хотите запустить SQL, скопированный из средств или кода приложения, которые используют заполнители, например :name, $1или ?.
Поддерживаемые синтаксисы заполнителей
Редактор запросов обнаруживает эти стили заполнителей вне строк, комментариев, операций приведения типов, срезов массивов, доллар-цитируемых блоков и JSON-операторов PostgreSQL.
Именованные заполнители
select id, email
from users
where id = :user_id;
Именованные заполнители чувствительны к регистру. Повторяющиеся экземпляры одного и того же имени используют одну и ту же строку сетки.
Позиционные параметры PostgreSQL
select id, email
from users
where id = $1;
$N Плейсхолдеры являются позиционными в содержащем их выражении.
Позиционные плейсхолдеры Qmark
select id, email
from users
where active = ?;
? Местозаполнители работают в порядке слева направо.
? в любой позиции значения служит параметром, в том числе после операторов сравнения (>=, <=, <>), в CASE-ветвях и в LIMIT/OFFSET. Операторы JSONB ?, ?| и ?& PostgreSQL, а также оператор путей JSON @?, распознаются как операторы, а не как параметры.
Important
Используйте один стиль заполнителя для каждой инструкции. Инструкция, в которой смешиваются :name и $N или $N и ?, отклоняется до выполнения.
Открытие и использование вкладки "Параметры"
- Откройте или создайте
.sqlфайл и подключите его к базе данных. - Запустите запрос выполнения (PostgreSQL),выполните текущую инструкцию (PostgreSQL) или запустите выбранный диапазон SQL.
- Если SQL содержит заполнители, вкладка "Параметры " откроется на нижней панели.
- Введите значение для каждой строки, выберите тип при необходимости и нажмите кнопку "Выполнить запрос".
- После первого запуска измените значения и снова нажмите кнопку "Выполнить ", чтобы повторить запрос.
На вкладке отображается одна строка для каждого уникального именованного заполнителя и одна строка для каждого позиционного заполнителя. Каждая строка включает имя или индекс заполнителя, поле ввода значения, флажок NULL, раскрывающийся список типов и действия для строки, если они доступны.
Скрипты с несколькими операторами
Примечание (май 2026 г.): в более ранних версиях этой статьи позиционные индексы ошибочно описывались как не зависящие от инструкции. Поведение не изменилось; Исправлена только документация.
Позиционные параметры ($N, ?) совместно используют один массив значений в исполняемом скрипте.
$1 (или первое ?) в любой инструкции всегда привязывается к тому же значению, что $1 и в любой другой инструкции. Повторное использовать тот же позиционный индекс в инструкциях не дает им независимых значений. Если вам нужны разные значения для одного индекса в разных инструкциях, используйте именованные параметры (:name) вместо него.
Если общее именованное значение несовместимо с одной из инструкций, в которых оно используется, PostgreSQL возвращает ошибку, а таблица сохраняет ваши значения, чтобы вы могли исправить их и запустить снова.
значения NULL
Установите флажок NULL для привязки SQL NULL. При проверке поле значения игнорируется для этой строки.
Если ввести литеральный текст NULL при отключении флажка NULL , сетка предупреждает, что значение привязывается как текст NULL, а не SQL NULL.
Выбор типов параметров
В раскрывающемся списке типа по умолчанию выбрано значение auto, что позволяет PostgreSQL определить тип параметра. Выберите тип, если требуется проверка на стороне клиента или более четкая привязка:
textintegerbigintnumericbooleandatetimestamptimestamptzuuidjsonjsonb
Проверка нестрогая. Предупреждение не блокирует отправку; PostgreSQL остается окончательным проверятелем во время выполнения.
Создание плана запроса с параметрами
При визуализации плана запроса для SQL, содержащего заполнители, вкладка "Параметры" управляет визуализатором плана запроса вместо возврата строк. На кнопке запуска написано Визуализировать план запроса, а после первого запуска — Визуализировать снова. Введите значения и нажмите кнопку, чтобы запустить EXPLAIN и открыть визуализатор плана запроса. Этот путь не возвращает результаты запроса.
Используйте «Игнорировать»
Используйте "Игнорировать ", когда в сетке отображается маркер, который должен оставаться в SQL, например допустимый оператор PostgreSQL. Игнорировать можно только в том случае, если маркер остается допустимым SQL без привязки.
Измените SQL и запустите снова
При открытии вкладки "Параметры" можно изменить SQL и снова нажать кнопку "Выполнить". Расширение повторно извлекает заполнители и сравнивает новый шаблонный SQL с предыдущим отпечатком пальца.
Если набор заполнителей изменен, баннер смещения суммирует изменения, такие как заполнители, добавленные или удаленные. Расширение переносит значения вперёд, когда плейсхолдер по-прежнему совпадает по имени или позиционному индексу. Если все заполнители удалены, сетка закрывается и запрос выполняется нормально.
Отмена и восстановление транзакций
Во время выполнения запуска с параметрами кнопка запуска меняется на кнопку остановки (с надписью Отмена). Отмена прерывает выполнение текущего пакета, пропускает последующие пакеты и оставляет вкладку Параметры открытой с сохранёнными значениями. Отмененный запуск показывает состояние пакета отменен, а не состояние сбоя, поэтому его строки не выделяются как ошибки.
Расширение не выполняет автоматический откат транзакций, запущенных пользователем. Если отмена приводит к переходу соединения в состояние прерванной транзакции, на вкладке Параметры отображается сообщение о восстановлении с Execute ROLLBACK. Выберите этот параметр, чтобы выполнить один явный ROLLBACK в том же соединении, а затем снова запустите скрипт.
Проверка сбоев и повторных попыток
Если параметризованный запуск завершается сбоем, вкладка "Параметры " сохраняет значения и отображает состояние сбоя с сводкой об ошибке базы данных. Выберите "Просмотреть сообщения" , чтобы открыть полные сведения о сообщении.
Отмененные запуски отображаются со статусом «Отменено» отдельно от запусков со сбоем, а последующие пакеты, которые не были выполнены, помечаются как пропущенные.
После исправления значения или типа нажмите кнопку "Выполнить снова". Вкладка очищает устаревший сбой, отмену и состояние выделения строк для новой попытки. Если подключение по-прежнему находится в прерванной транзакции, уведомление о восстановлении появляется снова.
Хранение значений журнала запросов
pgsql.queryPlaceholders.historyValueRetention Параметр определяет, сохраняются ли значения параметров в журнале запросов текущего сеанса в памяти:
| Ценность | Behavior |
|---|---|
ask |
Спрашивать после каждого успешного запуска с параметрами. |
always |
Сохраняйте значения для записей журнала сеансов без запроса. |
never |
Сохраняйте только шаблонный SQL. |
Когда ask активен, запрос, отображаемый после успешного выполнения, предлагает сохранить один раз (сохранить только эту запись), Всегда сохранять (также переключить параметр alwaysна ), пропустить (только шаблон SQL) и не спрашивать снова (также переключите параметр на never).
Значения хранятся только в памяти и очищаются при перезагрузке VS Code или изменении рабочей области. Значения параметров редактируются из телеметрии и журналов.
Подготовка предостережения
PREPARE ... AS SELECT $1 использует позиционный синтаксис на стороне сервера PostgreSQL. Расширение обнаруживает операторы PREPARE и оставляет заполнители в теле PREPARE для PostgreSQL вместо их привязки на стороне клиента. Другие инструкции в том же скрипте обычно анализируются.
Неподдерживаемые варианты MVP
MVP не включает:
- Постоянный журнал значений, хранимый на диске.
- Именованные или сохраненные наборы параметров в сеансах редактора.
- Повторное использование на стороне сервера
PREPARE/EXECUTEкак параметризованное выполнение на стороне клиента. - Составной тип, массив, bytea, диапазон, интервал, перечисление или другая привязка типа, выходящая за пределы поддерживаемых типов раскрывающегося списка.