Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ODAC. Параметризованные запросы. [D7]


checkmate-maker ©   (2008-09-15 09:28:00) 

Здравствуйте. Помогите разобраться.
После выполнения следующего участка кода сообщение не выдается(запрос пустой - ничего не вернул, но и не ругался)

var
 lOpenSQL: TOpenSQL;

...

 lSQLString := 'Select sec_name from pr_sec where sec_id = :S_ID';
 lOpenSQL := TOpenSQL.CreateWithParams(lSQLString);
 try
   lOpenSQL.DeclareVariable('S_ID', ftInteger);
   lOpenSQL.SetVariable('S_ID', 0);
   lOpenSQL.ReOpen;
   if not lOpenSQL.IsDone then
     ShowMessage(lOpenSQL.FieldAsString(0));
 finally
   lOpenSQL.Free;
 end;


Уточню TOpenSQL класс с приватным FOraQuery: TOraQuery.
Метод CreateWithParams:

 FOraQuery := TOraQuery.Create(nil);
 FOraQuery.Connection := Form1.OraSession1;
 FOraQuery.SQL.Text := SQL;

Метод DeclareVariable:

 FOraQuery.Params.CreateParam(AType, AName, ptInput);

Метод SetVariable:

 FOraQuery.ParamByName(AName).Value := AValue;

Метод ReOpen:

 FOraQuery.Open;

Метод IsDone:

 Result := FOraQuery.Eof;


 Чтобы исключить лишние уточнения добавлю: запрос без параметров работает "на ура". ODAC 5.1.

 Спасибо за помощь.


ANB   (2008-09-15 17:54:00) [1]


> checkmate-maker   (15.09.08 09:28)

Делаем из одака доа ?


Поросенок Винни-Пух   (2008-09-15 10:43:00) [2]

Это в штатной доке описано черным по белому


checkmate-maker   (2008-09-15 10:42:00) [3]

Всем спасибо за участие в решении вопроса.

 Я разобрался сам. Необходимо было устанавливать
FOraQuery.ParamCheck := false;

 Надеюся решение кому-нибудь пригодится. В инете подобного не нашел.


Поросенок Винни-Пух   (2008-09-15 10:05:00) [4]

передать из обертки текст sql, установить значение параметра. все.


Sergey13   (2008-09-15 10:01:00) [5]

> [0] checkmate-maker   (15.09.08 09:28)
> запрос пустой - ничего не вернул, но и не ругался

Ну так наверное нет значений с S_ID=0.
А какой смысл во всех ухищрениях с подменой методов?


Поросенок Винни-Пух   (2008-09-15 09:58:00) [6]

Зачем этот изврат?

FOraQuery.Params.CreateParam(AType, AName, ptInput);


Наверх

Титульная страница Поиск, карта сайта Написать письмо