Параметризованные запросы

Обновлен: Ноябрь 2007

В некоторых случаях нужно создать запрос, который можно использовать многократно, на каждый раз с разными значениями. Например: можно часто запускать запрос, чтобы найти все title_ids, записанные одним автором, Можно выполнять один запрос для каждого поиска, меняя только идентификатор или имя автора.

Чтобы создать запрос, который в разное время может иметь разные значения, используются параметры запроса. Параметр — это местозаполнитель для значения, который предоставляется при запуске запроса. Инструкция SQL с параметром может выглядеть следующим образом, где "?" представляет параметр для идентификатора автора:

SELECT title_id
FROM titleauthor
WHERE (au_id = ?)

Где можно использовать параметры

Параметры можно использовать как местозаполнители для литеральных значений — текстовых или числовых. Наиболее часто параметры используются в качестве местозаполнителей в условиях поиска отдельных строк или групп строк (то есть в предложениях WHERE и HAVING инструкций SQL).

Некоторые базы данных позволяют использовать параметр в качестве местозаполнителей в выражениях. Например, можно вычислять цены со скидками, предоставляя различное значение скидки при каждом запуске запроса. Для этого нужно указать следующее выражение:

(price * ?)

Дополнительные свойства по использованию параметров см. в документации по используемой базе данных.

Указание именованных и неименованных параметров

Можно задать два типа параметров: именованные и неименованные. Неименованный параметр — это вопросительный знак (?), который можно подставлять в любое место запроса, в котором нужно запросить соответствующее литеральное значение. Например, если неименованный параметр используется для поиска идентификатора автора в таблице titleauthor, то полученная в результате инструкция в области "SQL" может выглядеть следующим образом:

SELECT title_id
FROM titleauthor
WHERE (au_id = ?)

При выполнении запроса в конструкторе запросов и представлений в диалоговом окне Диалоговое окно "Параметры запроса" появляется "?" в качестве имени параметра.

Можно также присвоить имя параметру. Именованные параметры особенно полезны, если в запросе имеется несколько параметров. Например, если именованный параметр используется для поиска имени и фамилии автора в таблице authors, то полученная в результате инструкция в области "SQL" может выглядеть следующим образом:

SELECT au_id
FROM authors
WHERE au_fname = %first name% AND
      au_lname = %last name%
k14b54kc.alert_note(ru-ru,VS.90).gifСовет.

Перед тем как создать запрос с именованным параметром, необходимо определить символы префикса и суффикса. Дополнительные сведения см. в разделах "Конструктор запросов и представлений", "Инструменты для баз данных", диалоговое окно "Параметры".

При выполнении запроса в конструкторе запросов и представлений Диалоговое окно "Параметры запроса" появляется со списком именованных параметров.

См. также

Основные понятия

Поддерживаемые типы запросов (визуальные инструменты для баз данных)

Другие ресурсы

Выполнение запросов с помощью параметров

Конструирование запросов и представлений