?спользование параметров в запросе
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
Flake (обсуждение | вклад) |
||
| Строка 13: | Строка 13: | ||
'''Ответ:''' второй вариант лучше. Запрос перед выполнением каждый раз компилируется сервером и это занимает время. В первом случае -- каждый новый ContactKey будет приводить к новому запросу, новой компиляции и т.д. Во втором случае -- запрос всегда один и тот же. Кстати, при использовании оператора & нет смысла приводить к строке, так как этот оператор уже сам по себе обозначает приведение к строке. Можно сказать, что выражение B & A эквивалентно B + CStr(A). | '''Ответ:''' второй вариант лучше. Запрос перед выполнением каждый раз компилируется сервером и это занимает время. В первом случае -- каждый новый ContactKey будет приводить к новому запросу, новой компиляции и т.д. Во втором случае -- запрос всегда один и тот же. Кстати, при использовании оператора & нет смысла приводить к строке, так как этот оператор уже сам по себе обозначает приведение к строке. Можно сказать, что выражение B & A эквивалентно B + CStr(A). | ||
| + | |||
| + | См. [[Значения_или_параметры%3F]] | ||
Текущая версия на 11:47, 2 сентября 2008
Вопрос: как лучше передавать в SQL запрос параметр:
if CONTACTKEY(0) > 0 then _ S = S & " AND rec.USR$CONTACTKEY = " & CSTR(contactkey(0))
или
if CONTACTKEY(0) > 0 then _
S = S & " AND rec.USR$CONTACTKEY = :contact"
if CONTACTKEY(0) > 0 then _
q.ParamByName("contact").Asinteger = contactkey(0)
Ответ: второй вариант лучше. Запрос перед выполнением каждый раз компилируется сервером и это занимает время. В первом случае -- каждый новый ContactKey будет приводить к новому запросу, новой компиляции и т.д. Во втором случае -- запрос всегда один и тот же. Кстати, при использовании оператора & нет смысла приводить к строке, так как этот оператор уже сам по себе обозначает приведение к строке. Можно сказать, что выражение B & A эквивалентно B + CStr(A).