Мир InterBase


Подготовка параметров SQL-запроса - часть 3


  • Именованный параметр можно многократно указывать в разных частях одного запроса.
  • Порядок описания параметров может не соответствовать порядку использования параметров в тексте запроса. Это недопустимо для неименованных параметров.
  • В ADODB за удобство именованных параметров приходиться "платить" использованием режима автоматической генерации описания параметров (ADODB.Command.Parameters.Refresh). Причина заключается в том, что имя параметра, указываемое в ADODB.Command.CreateParameter, не передается команде. При использовании классов C++ такого ограничения нет - описание параметров можно формировать обоими способами. Еще одним ограничением, ADODB является невозможность использования именованных параметров для BLOB-полей -только неименованные параметры '?'.

    Как уже было сказано выше, команда запрещает одновременное использование в тексте запроса именованных и неименованных параметров.

    Сам InterBase поддерживает неименованные параметры. Поэтому команда вынуждена заменять в тексте запроса именованные параметры на неименованные параметры. Окончательный текст запроса, используемый для передачи на сервер, доступен через свойство команды "Prepare Stmt"

    Пример многократного выполнения параметризованного запроса, содержащего именованный параметр:

    ADODB

    Dim cmd As New ADODB.Command

    Dim rs As ADODB.Recordset

    cmd.ActiveConnection = en

    cmd.CommandText = "select * from job where job_code=:job_code"

    Dim i As Long

    For i = 0 To 10

    cmd.Parameters.Refresh

    cmd("job_code") = "Eng"

    Debug.Print cmd.Properties("prepare stmt")

    Set rs = cmd.Execute

    '...

    rs.Close

    Next i




    Начало  Назад  Вперед



    Книжный магазин