Мир InterBase



Особенности реализации поддержки массивов - часть 2


update job set language_req=:param.job.language_req

Переданные таким образом названия таблицы и колонки используются только для внутренних целей и недоступны вне провайдера. Если IBProvider смог самостоятельно получить эту информацию или значение параметра не является массивом, то пользовательская помощь игнорируется. В противном случае клиент отвечает за корректность переданных дополнительных сведений о параметре. Дополнительно заметим, что во 2-й и 3-й части такого составного имени параметра можно использовать квотированные названия объектов базы данных.

  • Клиент не имеет возможности определить интересующее его подмножество массива. Провайдер всегда возвращает массив целиком. Это ограничение OLEDB, а не InterBase.
  • При записи массива можно передавать подмножество. Но нужно учитывать, что массив всегда пересоздается. Поэтому в случае выполнения "UPDATE...", можно потерять предыдущую информацию из неуказанных элементов.
  • Пример чтения массивов.:

    ADODB

    Dim en As New ADODB.Connection

    cn.Open "file name=d:\database\employee.ibp"

    Dim cmd As New ADODB.Command, rs As ADODB.Recordset

    cmd.ActiveConnection = cn

    cmd. CornmandText = "select * from proj_dept_budget"

    Set rs = cmd.Execute

    Dim qhc As Variant ' QUART_HEAD_CNT

    Dim i As Long

    While Not rs.EOF

    If IsNull(rs("quart_head_cnt")) Then

    Debug.Print "NULL"

    Else

    qhc = rs("quart_head_cnt")

    For i = LBound(qhc, 1) To UBound(qhc, 1)

    Debug.Print "qhc[" & CStr(i) & "]=" & CStr(qhc(i))

    Next i

    End If

    rs.MoveNext

    Debug.Print "-------------------"

    Wend

    Пример записи массивов (InterBase 5.6):

        ADODB

    Dim en As New ADODB.Connection

    cn.Open "file name=d:\database\employee.ibp"

    Debug.Print en.Properties("IB Version")

    cn.BeginTrans

    Dim cmd As New ADODB.Command, rs As ADODB.Recordset

    cmd.ActiveConnection = cn

    cmd CommandText = "select * from proj_dept__budget"

    Set rs = cmd.Execute




    Содержание  Назад  Вперед