Перейти к содержанию

Параметры запроса: различия между версиями

Материал из Химсофт Вики
Нет описания правки
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
В тексте запроса могут присутствовать параметры. Рассмотрим следующий запрос:
В тексте запроса могут присутствовать параметры.  
 
==Пример==
Рассмотрим запрос к демонстрационной базе <code>PostgreSQL</code>:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Строка 18: Строка 21:
</syntaxhighlight>
</syntaxhighlight>


Это запрос к демонстрационной базе MS SQL. В запросе определен параметр с именем param1. Здесь надо сделать важное замечание: способ определения параметров в запросе отличается для разных СУБД. Для MS SQL параметр обозначается символом @; для MS Access параметры не имеют имен и обозначаются символами ?.
В запросе определен параметр с именем <code>lab_id</code>.  
 
<div style="background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;">
'''Примечание'''
 
Способ определения параметров в запросе отличается для разных СУБД:
*для <code>PosgreSQL</code> и <code>MS SQL</code> параметр обозначается символом <code>@</code> (например, <code>@lab_id</code>);
*для <code>Oracle</code> параметр обозначается символом <code>:</code> (например, <code>:lab_id</code>);
*для <code>MS Access</code> параметры не имеют имен и обозначаются символами <code>?</code>.
</div>


Для того чтобы работать с параметром, надо, как минимум, определить его значение. Это можно сделать на третьем шаге мастера "Мастер запроса", который мы рассмотрели выше. Для создания параметра нажмите кнопку "Добавить параметр". Будет создан новый параметр:
==Свойства==


[[Файл: query_parameters_1.png|center|border]]
[[Файл: query_parameters_1.png|center|border]]


==Свойства==
Для того чтобы работать с параметром, в окне справа необходимо настроить следующие его свойства:
В окне справа необходимо настроить следующие свойства параметра:


{|class="wikitable" style="margin:auto; background-color: #fff;"  
{|class="wikitable" style="margin:auto; background-color: #fff;"  
Строка 32: Строка 43:
!Описание
!Описание
|-
|-
|<code></code><br>'''''Символы'''''
|<code>Name</code>
|
|Имя параметра - то же самое имя параметра, которое использовалось в тексте запроса (подставляется автоматически).
'''''Примечание:''' некоторые СУБД (например, <code>MS Access</code>) не поддерживают именованные параметры; в этом случае оставьте это свойство без изменений.''
|-
|-
|<code></code><br>'''''Символы'''''
|<code>DataType</code>
|
|Тип данных параметра.
|-
|-
|<code></code><br>'''''Символы'''''
|<code>DefaultValue</code>
|
|Значение по умолчанию, которое будет присвоено параметру
*при отсутствии значения в свойстве <code>Expression</code>,
*при невозможности его вычислить (например, при операциях с запросом в режиме дизайна отчета).
|-
|-
|<code></code><br>'''''Символы'''''
|<code>Expression</code>
|
|Выражение, которое возвращает значение параметра - будет вычислено при запуске отчета на выполнение.
|-
|-
|<code></code><br>'''''Символы'''''
|<code>Size</code>
|
|Размер данных параметра. Это свойство нужно указывать, если параметр имеет тип данных <code>строка</code>.
|-
|-
|}
|}
<div style="background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;">
'''Примечание'''
Если вы неправильно настроите свойства параметра, вы получите ошибку в момент переключения на последнюю страницу мастера.
</div>

Текущая версия от 04:33, 16 октября 2026

В тексте запроса могут присутствовать параметры.

Пример

Рассмотрим запрос к демонстрационной базе PostgreSQL:

SELECT DISTINCT
	cl."ID" AS lab_id, 
	e."ID" AS fio_id,
	e."SURNAME" AS surname,
	e."NAME" AS name,
	e."PATRONYMIC" AS patronymic,
	CONCAT(e."SURNAME", ' ', e."NAME", ' ', e."PATRONYMIC") AS fio
FROM "COMPANY_LEVEL" cl 
INNER JOIN "EMPLOYEE_CLB" e_clb 
	ON cl."ID" = e_clb."COMPANY_LEVEL_ID" 
INNER JOIN "EMPLOYEE" e 
	ON e."ID" = e_clb."ENTITY_ID"  
WHERE cl."ID" = @lab_id 
ORDER BY fio;

В запросе определен параметр с именем lab_id.

Примечание

Способ определения параметров в запросе отличается для разных СУБД:

  • для PosgreSQL и MS SQL параметр обозначается символом @ (например, @lab_id);
  • для Oracle параметр обозначается символом : (например, :lab_id);
  • для MS Access параметры не имеют имен и обозначаются символами ?.

Свойства

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

Свойство Описание
Name Имя параметра - то же самое имя параметра, которое использовалось в тексте запроса (подставляется автоматически).

Примечание: некоторые СУБД (например, MS Access) не поддерживают именованные параметры; в этом случае оставьте это свойство без изменений.

DataType Тип данных параметра.
DefaultValue Значение по умолчанию, которое будет присвоено параметру
  • при отсутствии значения в свойстве Expression,
  • при невозможности его вычислить (например, при операциях с запросом в режиме дизайна отчета).
Expression Выражение, которое возвращает значение параметра - будет вычислено при запуске отчета на выполнение.
Size Размер данных параметра. Это свойство нужно указывать, если параметр имеет тип данных строка.

Примечание

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