Показать сообщение отдельно
  #1  
Старый 14.01.2011, 10:50
SaNeX SaNeX вне форума
Прохожий
 
Регистрация: 14.01.2011
Сообщения: 2
Репутация: 10
По умолчанию Вызов хранимой процедуры

Здравствуйте!
Работаю с 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, результат тот же..(
Есть идеи в чем может быть проблема?
Ответить с цитированием