Здравствуйте!
Работаю с Firebird 2.0 и Delphi. Есть необходимость вызвать хранимую процедуру из базы.
Текст ХП:
Код:
create procedure CLIENT_AND_ORDERS (
NAME_OF_CLIENT varchar(100))
returns (
NAME varchar(100),
ORDER_NUMBER integer,
DATE_BEGIN date)
as
declare variable BUF integer;
begin
select count(*) from client
where client.fio like :name_of_client||'%' into :buf;
if (:buf=0) then exception no_client;
else
for select client.fio, orders.order_number, orders.date_begin
from client join orders on client.passport_number_c = orders.passport_number_c
where client.fio like :name_of_client||'%'
into :name, :order_number, :date_begin
do
suspend;
end
Из программы вызываю так:
Код:
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('execute procedure client_and_orders (:nc)');
IBSQL1.Prepare;
IBSQL1.ParamByName('nc').asString:=namec;
IBSQL1.ExecQuery;
i:=1;
while not IBSQL1.Eof do
begin
stringgrid1.Cells[0,i]:=Datetimetostr(IBSQL1.Current.ByName('date_begin').AsDateTime);
stringgrid1.Cells[1,i]:=inttostr(IBSQL1.Current.ByName('order_number').AsInteger);
IBSQL1.Next;
stringgrid1.RowCount:=stringgrid1.RowCount+1;
inc(i);
end;
Админ: Пользуемся тегами!
Так вот, если вызываю процедуру в IBExpert - все отлично работает, но при вызове из программы IBSQL1.EOF возвращает true, т.е. результат не возвращается...
Пробовал использовать IBQuery вместо IBSQL, результат тот же..(
Есть идеи в чем может быть проблема?