Поделиться через


Структура DBCOMMANDTREE (cmdtree.h)

Примечание

Служба индексирования больше не поддерживается в Windows XP и недоступна для использования с Windows 8. Вместо этого используйте Windows Search для поиска на стороне клиента и Microsoft Search Server Express для поиска на стороне сервера.

Структура DBCOMMANDTREE — это основная структура данных, используемая для представления любого узла в дереве команд OLE DB, как описано в разделе Операторы обработки данных и Операторы определения данных этого справочника. Эта структура используется для каждого узла языка обработки данных (DML) или языка определения данных (DDL) в дереве команд OLE DB.

Синтаксис

typedef struct tagDBCOMMANDTREE {
  DBCOMMANDOP             op;
  WORD                    wKind;
  struct tagDBCOMMANDTREE *pctFirstChild;
  struct tagDBCOMMANDTREE *pctNextSibling;
  union {
    __int64            llValue;
    unsigned __int64   ullValue;
    BOOL               fValue;
    unsigned char      uchValue;
    signed char        schValue;
    unsigned short     usValue;
    short              sValue;
    LPOLESTR           pwszValue;
    LONG               lValue;
    ULONG              ulValue;
    float              flValue;
    double             dblValue;
    CY                 cyValue;
    DATE               dateValue;
    DBDATE             dbdateValue;
    DBTIME             dbtimeValue;
    SCODE              scodeValue;
    BSTR               *pbstrValue;
    ICommand           *pCommand;
    IDispatch          *pDispatch;
    IMoniker           *pMoniker;
    IRowset            *pRowset;
    IUnknown           *pUnknown;
    DBBYGUID           *pdbbygdValue;
    DBCOLUMNDESC       *pcoldescValue;
    DBID               *pdbidValue;
    DBLIKE             *pdblikeValue;
    DBCONTENT          *pdbcntntValue;
    DBCONTENTSCOPE     *pdbcntntscpValue;
    DBCONTENTTABLE     *pdbcntnttblValue;
    DBCONTENTVECTOR    *pdbcntntvcValue;
    DBCONTENTPROXIMITY *pdbcntntproxValue;
    DBGROUPINFO        *pdbgrpinfValue;
    DBPARAMETER        *pdbparamValue;
    DBPROPSET          *pdbpropValue;
    DBSETFUNC          *pdbstfncValue;
    DBSORTINFO         *pdbsrtinfValue;
    DBTEXT             *pdbtxtValue;
    DBVECTOR           *pdbvectorValue;
    SAFEARRAY          *parrayValue;
    VARIANT            *pvarValue;
    GUID               *pGuid;
    BYTE               *pbValue;
    char               *pzValue;
    DB_NUMERIC         *pdbnValue;
    DBTIMESTAMP        *pdbtsValue;
    void               *pvValue;
    DBPROBABILISTIC    *pdbprobValue;
    DBRELEVANTDOCUMENT *pdbreldocValue;
  } value;
  HRESULT                 hrError;
} DBCOMMANDTREE;

Члены

op

Идентификатор оператора (2 байта)

Значение типа DBCOMMANDOP из перечисления DBCOMMANDOPENUM . Он указывает оператор из операторов обработки данных или операторов определения данных, который определяет операцию, которая будет выполняться в связанном поле.

wKind

Дискриминатор для следующего объединения (2 байта)

Значение типа DBVALUEKIND из перечисленного типа DBVALUEKINDENUM . Он определяет тип данных связанного члена объединения, чтобы обработчик команд знал, как его интерпретировать.

pctFirstChild

Указатель на первый дочерний элемент (4 байта)

Указатель на структуру DBCOMMANDTREE , представляющую первый дочерний элемент этого узла дерева команд.

pctNextSibling

Указатель на одноуровневый элемент (4 байта)

Указатель на структуру DBCOMMANDTREE , представляющую следующий дочерний элемент этого узла дерева команд.

value

Объединение напрямую представляет поля, которые помещаются в 8 байт. Примечания перечисляют DBVALUEKIND и DBTYPE, соответствующие каждому полю.

Объединение для хранения значения для каждого типа данных, поддерживаемого этим поставщиком OLE DB. Для любого типа данных члена объединения, который содержит не более 8 байт, здесь хранится само значение. В противном случае llvalue является членом pwszValue , указателем на данные.

Элемент pwszValue — это строка; его интерпретация остается за поставщиком. Иными словами, потребитель должен понимать метод разрешения имен поставщика. Для компонентов команд, передаваемых через другой поставщик, интерпретировать строку остается принимающим поставщиком.

Элемент pMoniker используется для неразрешенных связанных объектов, в частности таблиц и функций.

Элемент pRowset используется для ссылки на открытый набор строк в качестве входных данных для команды. Большинство поставщиков завершится ошибкой, если метод IPersist вызывается, а дерево команд ссылается на открытый набор строк.

Элемент pCommand ссылается на другой объект команды в качестве входных данных для команды. Большинство поставщиков будут завершаться ошибкой, если вызывается метод IPersist , а дерево команд ссылается на объект команды, который не поддерживает моникеры.

value.llValue

DBVALUEKIND_I8 (DBTYPE_I8)

value.ullValue

DBVALUEKIND_UI8 (DBTYPE_UI8)

value.fValue

DBVALUEKIND_BOOL (DBTYPE_BOOL)

value.uchValue

DBVALUEKIND_UI1 (DBTYPE_UI1)

value.schValue

DBVALUEKIND_I1 (DBTYPE_I1)

value.usValue

DBVALUEKIND_UI2 (DBTYPE_UI2)

value.sValue

DBVALUEKIND_I2 (DBTYPE_I2)

value.pwszValue

DBVALUEKIND_WSTR (DBTYPE_WSTR)

value.lValue

DBVALUEKIND_I4 (DBTYPE_I4)

value.ulValue

DBVALUEKIND_UI4 (DBTYPE_UI4)

value.flValue

DBVALUEKIND_R4 (DBTYPE_R4)

value.dblValue

DBVALUEKIND_R8 (DBTYPE_R8)

value.cyValue

DBVALUEKIND_CY (DBTYPE_CY)

value.dateValue

DBVALUEKIND_DATE (DBTYPE_DATE)

value.dbdateValue

DBVALUEKIND_DBDATE (DBTYPE_DBDATE)

value.dbtimeValue

DBVALUEKIND_DBTIME (DBTYPE_DBTIME)

value.scodeValue

DBVALUEKIND_ERROR (DBTYPE_ERROR)

value.pbstrValue

DBVALUEKIND_BSTR (DBTYPE_BSTR)

value.pCommand

DBVALUEKIND_COMMAND (DBTYPE_IUNKNOWN)

value.pDispatch

DBVALUEKIND_IDISPATCH (DBTYPE_IDISPATCH)

value.pMoniker

DBVALUEKIND_MONIKER (DBTYPE_MONIKER)

value.pRowset

DBVALUEKIND_ROWSET (DBTYPE_ROWSET)

value.pUnknown

DBVALUEKIND_IUNKNOWN (DBTYPE_IUNKNOWN)

value.pdbbygdValue

DBVALUEKIND_BYGUID

value.pcoldescValue

DBVALUEKIND_COLDESC

value.pdbidValue

DBVALUEKIND_ID

value.pdblikeValue

DBVALUEKIND_LIKE

value.pdbcntntValue

DBVALUEKIND_CONTENT

value.pdbcntntscpValue

DBVALUEKIND_CONTENTSCOPE

value.pdbcntnttblValue

DBVALUEKIND_CONTENTTABLE

value.pdbcntntvcValue

DBVALUEKIND_CONTENTVECTOR

value.pdbcntntproxValue

DBVALUEKIND_CONTENTPROXIMITY

value.pdbgrpinfValue

DBVALUEKIND_GROUPINFO

value.pdbparamValue

DBVALUEKIND_PARAMETER

value.pdbpropValue

DBVALUEKIND_PROPERTY

value.pdbstfncValue

DBVALUEKIND_SETFUNC

value.pdbsrtinfValue

DBVALUEKIND_SORTINFO

value.pdbtxtValue

DBVALUEKIND_TEXT

value.pdbvectorValue

DBVALUEKIND_VECTOR | *

value.parrayValue

DBVALUEKIND_ARRAY | *

value.pvarValue

DBVALUEKIND_VARIANT (DBTYPE_VARIANT)

value.pGuid

DBVALUEKIND_GUID (DBTYPE_GUID)

value.pbValue

DBVALUEKIND_BYTES (DBTYPE_BYTES)

value.pzValue

DBVALUEKIND_STR (DBTYPE_STR)

value.pdbnValue

DBVALUEKIND_NUMERIC (DBTYPE_NUMERIC)

value.pdbtsValue

DBVALUEKIND_DBTIMESTAMP (DBTYPE_DBTIMESTAMP)

value.pvValue

универсальный DBVALUEKIND_BYREF

value.pdbprobValue

DBVALUEKIND_PROBABILISTIC

value.pdbreldocValue

DBVALUEKIND_RELEVANTDOCUMENT

hrError

Индикатор ошибки, сведения в разделе Расширенные сведения об ошибке (4 байта)

Комментарии

Многие операции создают среду привязки. Например, операция DBOP_select имеет два входных элемента — таблицу и логический предикат. (Дополнительные сведения об этой операции см. в разделе Операторы с двумя вариантами для упорядоченных и неупорядоченных таблиц.) В результате операции select таблица становится средой привязки для предиката. Это означает, что предикат может свободно ссылаться на имена столбцов, определенные в таблице. Обратите внимание, что не все привязки должны поступать из ближайшей операции таблицы. Например, в выражении exist может существовать несколько операций с таблицами, а любой предикат может ссылаться на столбец, определенный вне выражения exist. (В SQL это называется "коррелированные вложенные запросы".)

Типичный размер структуры DBCOMMANDTREE для узла составляет 24 байта. Однако операторы могут хранить определенные сведения в поле значения узла. Для удобства программирования поле объединения содержит ветви, представляющие некоторые распространенные типы, которые могут помещаться в пределах 8 байтов. Ссылка на типы переменной длины осуществляется через указатель на соответствующую структуру (например , DBTEXT). Дискриминатор для объединения имеет тип WORD , а не DBVALUEKIND , поэтому можно хранить значения узлов, такие как DBVALUEKIND_VECTOR | DBVALUEKIND_GUID, DBVALUEKIND_BYREF | DBVALUEKIND_UI4 или DBVALUEKIND_SAFEARRAY | DBVALUEKIND_I4.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть cmdtree.h