Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание
Служба индексирования больше не поддерживается в 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 |