Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить из ХП набор данных и OUTPUT параметр? 
V
    Опции темы
tikskit
Дата 16.1.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Есть ХП, которая имеет IN и OUTPUT параметры. Кроме того, она возвращает набор данных. Требуется на клиенте получить и набор данных и значение OUTPUT параметра.

Код

function GetData(const EntityCode: Int64): Integer;
var
  Proc: TADOStoredProc;

  PEntityCode: ADODB.TParameter;
  PRowsCount: ADODB.TParameter;
begin
  Proc := TADOStoredProc.Create(nil);
  try
    Proc.Connection := ADOConnection1;
    Proc.CursorLocation := clUseServer;
    Proc.ProcedureName := 'MyStoredProc';

    PEntityCode := Proc.Parameters.AddParameter;
    PEntityCode.Name := '@EntityCode';
    PEntityCode.DataType := ftLargeint;
    PEntityCode.Value := EntityCode;

    PRowsCount := Proc.Parameters.AddParameter;
    PRowsCount.Name := '@TotalCount';
    PRowsCount.DataType := ftInteger;
    PRowsCount.Direction := pdOutput;
    Proc.Prepared := True;

    Proc.ExecProc;
    Result := PRowsCount.Value;
    while not Proc.Eof do
    begin
      Proc.Next;
    end;
  finally
    Proc.Free;
  end;

end;


В этом случае значение PRowsCount.Value определяется правильно, но возвращаемый набор данных пуст.
Если убрать Proc.Prepared := True и вместо Proc.ExecProc сделать Proc.Open, то значение PRowsCount.Value равно нулю, но набор данных не пустой.


Это сообщение отредактировал(а) tikskit - 16.1.2013, 14:23
PM MAIL WWW   Вверх
kami
Дата 16.1.2013, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Сперва получить данные из набора, потом закрыть набор и забрать выходной параметр.
До закрытия выходные параметры недоступны не определены, по крайней мере в MSSQL

Это сообщение отредактировал(а) kami - 16.1.2013, 18:12
PM MAIL WWW   Вверх
tikskit
Дата 16.1.2013, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



kami, огромное спасибо! Замучился с этим!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.