Ввод SQL запросов и вывод хранимых процедур

 

Работая с приложением баз данных, пользователь должен иметь возможность задавать SQL запросы, некоторые из которых сохранены на сервере в виде хранимых процедур. Для обеспечения такой возможности следует на главную форму поместить компонент для ввода текста Memo, в который пользователь и будет вводить текст запроса. Затем на модуль данных поместим компонент IBQuery1: TIBQuery1 (соответственно и DataSource1: TDataSource1), создадим форму для вывода результата и поместим на неё компонент DBGrid1: TDBGrid1. Затем на главную форму поместим кнопку и в обработчике её нажатия зададим перезапись введённого запроса из текстового поля в свойство SQL компонента IBQuery1 после чего сделаем компонент IBQuery1 активным и отобразим форму вывода результата.

Если в запросе указать вывод хранимой процедуры, просто указав

select * from KOL_BOOKS_TIRAZ;

или

select * from BOOKS_LIBRARY;

то выполнится запрос, определённый в этой процедуре.

Листинг процедуры – обработчика события нажатие на кнопку «Вывести результат запроса»:

procedure TForm1.Button10Click(Sender: TObject);

var i:integer;

begin

DataModule2.IBQuery1.Active:=False;

DataModule2.IBQuery1.SQL.Clear;

for i:=0 to Memo1.Lines.Count do

begin

DataModule2.IBQuery1.SQL.Append(Memo1.Lines[i]);

end;

DataModule2.IBQuery1.Active:=True;

Form10.Show;

end;

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

procedure TForm1.Button9Click(Sender: TObject);

begin

DataModule2.IBQuery1.SQL.Clear;

DataModule2.IBQuery1.SQL.Add('select * from BOOKS_LIST_PERIOD(' +#39+MaskEdit1.Text+#39+','+#39+MaskEdit2.Text+#39+');');

DataModule2.IBQuery1.Active:=true;

Form9.Show;

end;

Здесь при помощи процедуры Add добавляется запись к свойству SQL компонента IBQuery1 (предварительно оно очищается при помощи процедуры Clear). MaskEdit1.Text и MaskEdit2.Text – значения полей ввода значений входных параметров, #39 – ASCII код одинарной кавычки, кавычки нужны для заключения в них значений входных параметров хранимой процедуры в SQL запросе. Затем активируется компонент IBQuery1 и отображается форма вывода результата хранимой процедуры.

 



Список литературы

 

1. Ковязин С., Востриков С. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/ Firebird/ Yaffil. – М.: КУДИЦ – ОБРАЗ, 2005. – 496 с.

2. Хомоненко А.Д., Гофман В.Э. Работа с базами данных в Delphi. – СПб.: БХВ – Петербург, 2005. – 640с.

3. Кондзюба С.П., Громов В.Н. Delphi 6. Базы данных и приложения: Лекции и упражнения. – Киев: ДиаСофт, 2001. – 576 с.

4. http://www.ibase.ru/devinfo/ibfaq.htm

5. http://www.piter.com/lib/978527200003/sql7.phtml?fil=Ch12

6. http://www.codenet.ru/progr/delphi/stat/SQL-Delphi.php


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: