Создание приложений для работы с базами данных в сети____________593

определения   в   объявлении   процедуры.   Например,   StoredProcl->Pa-
rams->Items[0] — значение первого параметра.

Вызов процедуры осуществляется методом ЕхесРгос. Возвращаемые процеду-
рой значения ее выходных параметров могут быть взяты из свойства Params. Они
располагаются там после входных параметров. При получении результатов может
быть использован метод ParamByName или доступ по индексу.

Постройте пример, использующий рассмотренную ранее процедуру Getlnf.
Введите в приложение окна редактирования FamEdit, NamEdit и ParEdit, в кото-
рых пользователь может задавать фамилию, имя и отчество сотрудника, информа-
ция о котором его интересует. Введите также метки LDep, LYear и LSex, в кото-
рых будет отображаться возвращаемая процедурой информация. И введите кноп-
ку Выполнить, при щелчке на которой должен выполняться код:

StoredProcl->ParamByName("PFAM")->AsString = FamEdit->Text;

StoredProcl->ParamByName("PNAM")->AsString = NamEdit->Text;

StoredProcl->ParamByName("PPAR")->AsString = ParEdit->Text;

StoredProcl->ExecProc () ;

if (StoredProcl->ParamByName("PYEAR")->AsInteger == 0)

Application->MessageBox("В базе данных запись отсутствует",
"Ошибка",МВ_ОК) ;

else

(
LDep->Caption = StoredProcl->ParamByName("PDEP")->AsString;

LYear->Caption = StoredProcl->ParamByName("PYEAR")->AsString;

LSex->Caption = StoredProcl->ParamByName("PSEX")->AsString;

Приведенный код, вероятно, в дополнительных комментариях не нуждается.
Запустите ваше приложение и попробуйте с его помощью получить информацию о
сотруднике, о котором в базе данных имеется запись, и о сотруднике, отсутствую-
щем в базе данных. Для контроля полезно добавить к приложению контрольную
таблицу, которая отображала бы содержимое базы данных.

На диске вы можете найти более развернутый пример, работающий с процеду-
рами базы данных ib.

10.3.5.3 Хранимые процедуры выбора

Рассмотренные ранее выполняемые процедуры возвращали параметры. В от-
личие от них процедуры выбора возвращают множество результатов, таблицы.

Как пример рассмотрим процедуру выбора с именем Selectd, возвращающую
информацию о сотрудниках, работающих в указанном отделе.

CREATE PROCEDURE Selectd (pDep char(15))
RETURNS (pFam char(20), pNam char(20), pPar char(20),

pYear integer, PSex char(l))
AS
BEGIN

FOR SELECT Fam, Nam, Par, Year_b, Sex From Pers WHERE (Dep=:pDep)
INTO pFam, pNam, pPar, pYear, pSex
DO
SUSPEND;

END; /\

Заголовок оператора Create Procedure выглядит так же, как и для выполняе-
мой процедуры. В нем определяется передаваемый параметр (в данном случае
pDep) и возвращаемые параметры, перечисляемые в списке после ключевого слова
Returns. Так же, как в выполняемой процедуре, используется блок begin...end,
хотя в процедурах выбора в нем обычно имеется только один оператор For Select.
Этот оператор осуществляет выбор, как и оператор Select ... Into в выполняемых
процедурах, но отличается от него следующими особенностями. Он обрабатывает