Конференция "Базы" » TADOCommand и лишние параметры [D7]
 
  • Очень злой (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]
    > как более красиво выйти из данной ситуации?

    самое красивое - использовать хранимую процедуру
  • sniknik © (01.06.11 15:26) [3]
    > Но а вообще, почему лишние параметры создают ексепшены?
    сами по себе? не может быть.

    > самое красивое - использовать хранимую процедуру
    ???
  • 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]

    >  при каждом запросе список параметров обновляется.

    Читайте справку, там написано в каких случаях ваши умозаключения не верны.
 
Конференция "Базы" » TADOCommand и лишние параметры [D7]
Есть новые Нет новых   [134431   +13][b:0][p:0.001]