Конференция "Базы" » ODAC. Параметризованные запросы. [D7]
 
  • checkmate-maker (15.09.08 09:28) [0]
    Здравствуйте. Помогите разобраться.
    После выполнения следующего участка кода сообщение не выдается(запрос пустой - ничего не вернул, но и не ругался)

    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.

     Спасибо за помощь.
  • Поросенок Винни-Пух © (15.09.08 09:58) [1]
    Зачем этот изврат?

    FOraQuery.Params.CreateParam(AType, AName, ptInput);
  • Sergey13 © (15.09.08 10:01) [2]
    > [0] checkmate-maker   (15.09.08 09:28)
    > запрос пустой - ничего не вернул, но и не ругался

    Ну так наверное нет значений с S_ID=0.
    А какой смысл во всех ухищрениях с подменой методов?
  • Поросенок Винни-Пух © (15.09.08 10:05) [3]
    передать из обертки текст sql, установить значение параметра. все.
  • checkmate-maker (15.09.08 10:42) [4]
    Всем спасибо за участие в решении вопроса.

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



     Надеюся решение кому-нибудь пригодится. В инете подобного не нашел.
  • Поросенок Винни-Пух © (15.09.08 10:43) [5]
    Это в штатной доке описано черным по белому
  • ANB (15.09.08 17:54) [6]

    > checkmate-maker   (15.09.08 09:28)

    Делаем из одака доа ?
 
Конференция "Базы" » ODAC. Параметризованные запросы. [D7]
Есть новые Нет новых   [134435   +34][b:0][p:0.001]