Как вытащить результат из ХП

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Как вытащить результат из ХП

Сообщение Vetal » 11 янв 2007, 15:11

Здравствуйте у меня вопрос....

Код: Выделить всё

    IBQuery1.SQL.Clear;
    IBQuery1.SQL.Add('execute procedure SP_CHECKINSERTCONTRACT (:NUMBERCONTRACT)');
    IBQuery1.ParamByName('NUMBERCONTRACT').AsInteger:=ContractNamber;
    IBQuery1.ExecSQL;
    FMain.IBTransaction1.Commit;
    FMain.IBTransaction1.StartTransaction;
        IDNUMBERCONTRACT:=IBQuery1.Current[0].AsInteger;
в результате переменной IDNUMBERCONTRACT ничего не присваивается, хотя на сервере в ХП все работает а вот через обращение IDNUMBERCONTRACT:=IBQuery1.Current[0].AsInteger; вытянуть возвращаемый результат не получается....



Сама ХП

Код: Выделить всё

begin
if (not exists (select ID from contracts where numbercontract=:numbercontract)) then
  begin
      insert into contracts (numbercontract)
      values (:numbercontract)
      returning id into :id;
      result=1;
  end
else
  begin
      result=0;
      select (ID) from contracts where numbercontract=:numbercontract into :id;
   end
  /* Procedure Text */
  suspend;
end

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 11 янв 2007, 15:42

А кто вам сказал, что этот результат может пережить конец транзакции?

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 11 янв 2007, 15:47

Код: Выделить всё

    IBQuery1.ExecSQL;
    IDNUMBERCONTRACT:=IBQuery1.Current[0].AsInteger;
    FMain.IBTransaction1.Commit;
    FMain.IBTransaction1.StartTransaction;
Так тоже ничего не получается

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 11 янв 2007, 16:07

Спасибо подсказка верна....

Ответить