Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6323
Последний выпуск: 19.06.2015

Delphi Firebird Procedure

78K
29 декабря 2011 года
crossmark
2 / / 29.12.2011
Привет!
Столкнулся с такой проблемой... как только не пробовал... только не так как надо.
не могу получить выходные параметры из хранимой процедуры бд на Firebird/
сама процедура в IBExpert работает: вот код
Код:
Код:
create or alter procedure PR_READ_DATA_PERS (
TAB_PERS integer)
returns (
R_TAB_PERS integer,
R_FAM_PERS varchar(30),
R_NAME_PERS varchar(30),
R_LAST_NAME_PERS varchar(30),
R_TOWN_PERS varchar(30),
R_STREET_PERS varchar(30),
R_HOUSE_PERS varchar(10),
R_KVART_PERS varchar(10),
R_BIRTH_PERS date,
R_KOLONA_PERS smallint,
R_POST_PERS integer,
R_MOTION_PERS integer,
R_KLASS_PERS smallint,
R_TRACT_PERS integer,
R_DATE_PERS date)
as
begin
select PERSONAL.p_tab, PERSONAL.P_FAMILY, PERSONAL.P_NAME, PERSONAL.P_LASTNAME,
PERSONAL_DATA.PD_TOWN, PERSONAL_DATA.PD_STREET, PERSONAL_DATA.PD_HOUSE,personal_data.pd_kvart,
PERSONAL_DATA.P_BIRTH, PERSONAL_DATA2.PD_KOLONA, personal_data2.pd_post,
personal_data2.pd_motion, PERSONAL_DATA2.PD_KLASS, personal_data2.pd_traction, PERSONAL_DATA2.PD_DATE
from personal,personal_data,personal_data2
where (personal.p_tab=:Tab_pers) and (personal_data.pd_tab=:tab_pers) and (personal_data2.pd_tab=:tab_pers)
into :R_TAB_PERS, :R_FAM_PERS,:R_NAME_PERS,:R_LAST_NAME_PERS,:R_TOWN _PERS,:R_STREET_PERS,:R_HOUSE_PERS,:R_KVART_PERS,: R_BIRTH_PERS,:r_kolona_pers,:R_POST_PERS,:r_motion _pers,:r_klass_pers,:R_TRACT_PERS,:r_date_pers;
end

Тут, занчаит один входящий парметр и ряд выходящик параметров.

на делфи пробую вызов так:
Код:
Код:
StoredProcReadPersProc.Active;
StoredProcReadPersProc.StoredProcName:='PR_READ_DA TA_PERS';
StoredProcReadPersProc.Params.Add;
StoredProcReadPersProc.Params.Items[0].Name:= 'TAB_PERS';
//StoredProcReadPersProc.Params[0].AsInteger:=QueryViewPers.FieldByName('P_TAB').AsI nteger;
StoredProcReadPersProc.Params.ParamValues['TAB_PERS']:= QueryViewPers.FieldByName('P_TAB').AsInteger;
StoredProcReadPersProc.Params.Add;
StoredProcReadPersProc.Params.Items[1].Name:='R_FAM_PERS';
showmessage(StoredProcReadPersProc.ParamByName('TA B_PERS').AsString);
StoredProcReadPersProc.Prepare;
StoredProcReadPersProc.ExecProc;

//StoredProcReadPersProc.Params.AddParam(
s:=StoredProcReadPersProc.ParamByName('R_FAM_PERS' ).Value;
showmessage(s);

как получить все эти выходные параметры...?


спасибо!
277
29 декабря 2011 года
arrjj
1.7K / / 26.01.2011
Мало того что все параметры, у тебя может возвращатся целая табличка.
http://stackoverflow.com/questions/927794/how-do-i-return-all-values-from-a-stored-procedure
78K
29 декабря 2011 года
crossmark
2 / / 29.12.2011
ну вот просмотрел и по образцу набросал, пустые параметры выходят
Код:
procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
s:string;
begin
 //IBStoredProc1.Open;
    IBStoredProc1.Params.Add;
IBStoredProc1.Params.Items[0].Name:= 'TAB_PERS';
 IBStoredProc1.Params.ParamValues['TAB_PERS']:=2;
   IBStoredProc1.Params.Add;
IBStoredProc1.Params.Items[1].Name:= 'R_FAM_PERS';
  IBStoredProc1.Params.Add;
IBStoredProc1.Params.Items[2].Name:= 'R_NAME_PERS';
 IBStoredProc1.ExecProc;

 IBStoredProc1.Prepare;
 s:=IBStoredProc1.Params.ParamByName('R_NAME_PERS').Value;
 for i := 0 to IBStoredProc1.ParamCount - 1 do
begin
  Memo1.Lines.Add(IBStoredProc1.Params.Items.Name);
  Memo1.Lines.Add(IBStoredProc1.Params.Items.Value);
end;
showmessage(s);
end;

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог