![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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);