-
Очень злой (01.06.11 15:01) [0]Выполняю в цикле несколько запросов.
with TADOCommand.Create(nil) do
try
...
for i:=0 to sqlstrings.Count-1 do
begin
s.Subprogres:=i;
sqltext:=sqlstrings.Strings[i];
CommandText:=sqltext;
Execute;
end;
...
Запросы параметрические. Но каждый запрос может использовать разное кол-во параметров.
Например задал параметры :wd и :yy
Но часть запросов используют только :wd, а часть и :wd, и :yy
При этом возникают ексепшены, из-за того, что в некоторых запросах используются не все параметры (используется только :wd).
Пока нашел выход из ситуации использованием :yy в тех, запросах где он не нужен, добавлением в where заведомо ложного выражения, типа:
... where ... and 1<>yy ...
Но а вообще, почему лишние параметры создают ексепшены? И как более красиво выйти из данной ситуации?
Пока -
Очень злой (01.06.11 15:04) [1]Хм... Слово "пока" в конце предыдущего сообщения оказалось случайно, в ходе его редактирования. :)
-
clickmaker © (01.06.11 15:06) [2]> как более красиво выйти из данной ситуации?
самое красивое - использовать хранимую процедуру -
> Но а вообще, почему лишние параметры создают ексепшены?
сами по себе? не может быть.
> самое красивое - использовать хранимую процедуру
??? -
Anatoly Podgoretsky © (01.06.11 16:29) [4]
> Но а вообще, почему лишние параметры создают ексепшены?
> И как более красиво выйти из данной ситуации?
лишние параметры не создают исключений. -
Anatoly Podgoretsky © (01.06.11 16:30) [5]И да, в коде не используются ни какие параметры, так что все они лишнии.
-
Очень злой (01.06.11 17:27) [6]Все. Понял. Оказалось что дело не в лишних параметрах, а в том что при каждом запросе список параметров обновляется. Т.е. если выполняется запрос не содержащий всех параметров, то лишние исчезают, и эксепшен возникает при выполнении очередного запроса где используется параметры, которые не использовались в предыдущем...
Т.е. просто я создание параметров и установку им типов и значений производил заранее, один раз, а потом выполнял серию запросов.
А получается нужно перезадавать параметры в цикле.. -
Плохиш © (02.06.11 13:24) [7]
> при каждом запросе список параметров обновляется.
Читайте справку, там написано в каких случаях ваши умозаключения не верны.