Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
S.H.S
- Сообщения: 65
- Зарегистрирован: 25 ноя 2005, 02:18
Сообщение
S.H.S » 20 ноя 2006, 13:16
Я использую Delphi+FIBPlus+EhLib. Запрос у меня примерно такой:
Код: Выделить всё
SELECT * FROM base
WHERE sell_date>=:date1 AND sell_date<=:date2 AND
/*FILTER*/ 1=1
ORDER BY num
Вопрос: Как я могу перехватиь уже готовый запрос с подставленными параметрами, сортировками и фильтрами EhLib. Как получить такой:
Код: Выделить всё
SELECT * FROM base
WHERE sell_date>='01.01.2006' AND sell_date<='01.10.2006' AND
name='NAME'
ORDER BY name
QSelect.ReadySQLText не помогает.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 20 ноя 2006, 14:40
Никакие SQLText тебе не помогут, потому как такой текст никогда не собирается.
Параметры передаются на сервер независимо от текста запроса.
-
S.H.S
- Сообщения: 65
- Зарегистрирован: 25 ноя 2005, 02:18
Сообщение
S.H.S » 20 ноя 2006, 15:11
А что тогда может помочь? Как то же работают SQL мониторы.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 21 ноя 2006, 14:46
S.H.S писал(а):А что тогда может помочь? Как то же работают SQL мониторы.
А ты никогда не видел, что ли? Именно так и работают, всё по очереди.
Код: Выделить всё
SQL Prepare: INTRBASE - select * from Table1 where id=?
SQL Vendor: INTRBASE - isc_dsql_allocate_statement
SQL Vendor: INTRBASE - isc_dsql_prepare
SQL Vendor: INTRBASE - isc_dsql_sql_info
SQL Vendor: INTRBASE - isc_vax_integer
SQL Data In: INTRBASE - Param = 1, Name = , Type = fldINT32, Precision = 0, Scale = 0, Data = 8
SQL Vendor: INTRBASE - isc_dsql_execute
SQL Stmt: INTRBASE - Fetch
Ты можешь точно так же мониторить, и когда увидел execute, собрать запрос в текстовый вид.