![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOQuery- как правильно работать с ; параметриз.запросом [D5, MSSQL]
kserg@ukr.net © (2002-04-03 12:17:00)Ранее был вар-т select...where ID_PKI=:IdPKI
где IdPKI - пар-р целое число
Возникла необходимость переделать запрос, чтобы выбирать из списка типа where ID_PKI in (1,2,6)
Переделал запрос
select...where ID_PKI in (:IdPKI)
где IdPKI - пар-р строка типа "1,2,6"
select...where ID_PKI in :IdPKI
где IdPKI - пар-р строка типа "(1,2,6)"
В обоих случаях вылетает ошибка.
Как корректно порешить проблему?
Спасибо
TSV (2002-04-03 13:39:00) [1]Только желательно тестить на реальных данных.
А еще можно смотреть план запроса, пробовать строить индексы и т.д.
TSV (2002-04-03 13:37:00) [2]> kserg@ukr.net (03.04.02 12:52)
Замерять время выполнения запроса:
declare
@time1 datetime,
@time2 datetime
select @time1 = getdate()
select * from table1 -- тестируемый запрос
select @time2 = getdate()
select datediff(ms, @time1, @time2)
Удачи.
Johnmen (2002-04-03 13:16:00) [3]Прошу прощения за дублирование... :(
Johnmen (2002-04-03 13:06:00) [4]Ошибка из-за того, что фактически ты хочешь сделать макроподстановку, а не параметр указать !
Для ADO красивого решения не знаю, кроме, как делать запрос целиком динамически...
kserg@ukr.net (2002-04-03 12:52:00) [5]> Johnmen © (03.04.02 12:25)
Печальный факт, но всё равно
спасибо, уважаемый, не раз получаю от тебя ответы.
У меня ещё вопросик (немного не в тему):
как в MSSQL можно тестировать запросы на предмет скорости
выполнения различных вар-тов запроса.
Aleksandr (2002-04-03 12:25:00) [6]Ну, на самом деле здесь проще решать установкой фильтра, а не изменением запроса. Но можно и так:
SELECT * FROM Table
WHERE ID_PKI IN (:ID1,:ID2,:ID3)
И кстати, не советую параметры обзывать именами полей... Бывает, не проскакивает.
Johnmen (2002-04-03 12:25:00) [7]Ошибка из-за того, что фактически ты хочешь сделать макроподстановку, а не параметр указать !
Для ADO красивого решения не знаю, кроме, как делать запрос целиком динамически...