Параметры запросов и хранимых процедур
Свойство Params представляет собой набор изменяемых параметров запроса или хранимой процедуры, а также набор объектов TParam, инкапсулирующих отдельные параметры.
Рассмотрим следующий запрос SQL:
SELECT SaleDat, OrderNo FROM Orders WHERE SaleDat >= '01.08.2001' AND SaleDat <= '31.08.2001'
В нем осуществляется отбор номеров заказов, сделанных в августе 2001 года. Теперь вполне естественно было бы предположить, что пользователю может понадобиться получить подобный отчет за другой месяц или за первые десять дней августа.
В этом случае можно поступить так:
procedure TForml.FormCreate(Sender: TObject); begin with Queryl do begin SQL[0]: = 'SELECT PartDat, ItemNo, ItemCount, InputPrice'; SQL[1]: = 'FROM Parts'; SQL[2]: = 'WHERE PartDat >= "01.08.2001" AND PartDat<=" 31. 08. 2001 '''; end; end; procedure TForml.RunBtnClick(Sender: TObject); begin with Queryl do begin if Active then Close; SQL[2]: = 'WHERE PartDat >= '+chr(39)+DatelEdit.Text+chr(39)+ AND PartDat<='+chr(39)+Date2Edit.Text+chr(39); Open; end; end;
При создании формы в методе FormCreate задается текст запроса. Для этого используется свойство SQL. При щелчке на кнопке RunBtn, в соответствии с заданными в однострочных редакторах Date1Edit и Date2Edit датах, изменяется текст запроса. Метод FormCreate приведен только для того, чтобы обозначить первоначальный текст запроса, этот текст вполне можно задать в свойстве SQL.
Для решения подобных задач как раз и используются параметры. В этом случае текст запроса будет выглядеть следующим образом:
SELECT PartDat, ItemNo, ItemCount, InputPrice FROM Parts WHERE PartDat >=:PD1 AND PartDat<=:PD2
Двоеточие перед именами PD1 и PD2 означает, что это параметры. Имя параметра выбирается произвольно. В списке свойства Params первым идет тот параметр, который расположен первым по тексту запросу.
После ввода в свойстве SQL текста запроса для каждого параметра автоматически создается объект TParam. Эти объекты доступны в специализированном редакторе, который вызывается при щелчке на кнопке свойства Params в Инспекторе объектов (рис. 12.2). Для каждого параметра требуется установить тип данных, который должен согласовываться с типом данных соответствующего поля.
Рис. 12.2. Специализированный редактор параметров запроса