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

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

Parameter bbb_id not found [D7, IB6.x]


Pavlov ©   (2009-05-12 15:58:00) 

with DataModule1.IBQuery do
 begin
     SQL.Clear;
     SQL.Add(' select aaa_id FROM Table1 left join Table2 on  Table1.bbb_id= Table2.bbb_ID '+
             ' where Table2.ccc_id = : ccc_ID   and   Table2.bbb_id = : bbb_ID');
     ParamByName('bbb_ID').AsInteger := 452559; //
     ParamByName('ccc_ID').AsInteger := 9958; //
     Open;
     aaa_ID := FieldByName('aaa_id').AsInteger;
     Close;
 end;

Почему-то выдает ошибку   Parameter bbb_id not found.
Пробовал запрос в IBExpert, там все работает.


Игорь Шевченко   (2009-05-13 12:29:00) [1]


> Это ну ОЧЕНЬ вумная СУБД должна быть, чтобы вот так вот
> данный запрос распознать


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


Ega23   (2009-05-13 10:10:00) [2]


> не всегда проще. в некоторых субд :) запрос кешируется на
> сервере во избежании парсинга и оптимизации, и при явном
> задавании параметров перерасход памяти будет.


Тогда задай текст один раз, создай параметры, выполни ему Prepare, и потом работай, подставляя значения параметров. Нафига каждый раз текст менять?
И, эта... Это ну ОЧЕНЬ вумная СУБД должна быть, чтобы вот так вот данный запрос распознать.


Германн   (2009-05-13 01:11:00) [3]

Я бы всё-таки обратил ещё раз внимание на первый вопрос от "Ega23 ©   (12.05.09 17:18) [1]".
Уж очень часто (а я очень редко работаю с БД) возникают такие вопросы.


Игорь Шевченко   (2009-05-13 00:51:00) [4]

Petr V. Abramov ©   (13.05.09 00:16) [4]

В Интербейзе вроде не кешируется


Petr V. Abramov   (2009-05-13 00:16:00) [5]


> Ega23 ©   (12.05.09 17:18) [1]


> 3.

да

> 2. А зачем так, если каждый раз один фиг текст запроса задаёшь?
>  Не проще ли значение параметра сразу задавать?

не всегда проще. в некоторых субд :) запрос кешируется на сервере во избежании парсинга и оптимизации, и при явном задавании параметров перерасход памяти будет.


Palladin   (2009-05-12 19:42:00) [6]

Удалено модератором


Ega23   (2009-05-12 17:18:00) [7]

1. DataModule1.IBQuery.ParamCheck чему равно?
2. А зачем так, если каждый раз один фиг текст запроса задаёшь? Не проще ли значение параметра сразу задавать?
3. Пока писал, увидел. Перепиши так:
' where Table2.ccc_id=:ccc_ID and Table2.bbb_id=:bbb_ID');


Медвежонок Пятачок   (2009-05-12 17:18:00) [8]

пробел убери


Наверх

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