Estructura DBCOMMANDTREE (cmdtree.h)
Nota
El servicio de indexación ya no se admite a partir de Windows XP y no está disponible para su uso a partir de Windows 8. En su lugar, use La búsqueda del lado cliente de Windows Search y Microsoft Search Server Express para la búsqueda del lado servidor.
La estructura DBCOMMANDTREE es la estructura de datos principal que se usa para representar cualquier nodo de un árbol de comandos OLE DB, como se describe en la sección Operadores de manipulación de datos y Operadores de definición de datos de esta referencia. Esta estructura se usa para cada nodo de lenguaje de manipulación de datos (DML) o lenguaje de definición de datos (DDL) en un árbol de comandos 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
Identificador de operador (2 bytes)
Valor de tipo DBCOMMANDOP de la enumeración DBCOMMANDOPENUM . Especifica un operador de los operadores de manipulación de datos o los operadores de definición de datos que definen la operación que se realizará en el campo asociado.
wKind
Discriminador para la unión siguiente (2 bytes)
Valor de tipo DBVALUEKIND del tipo enumerado DBVALUEKINDENUM . Define el tipo de datos del miembro de unión asociado para que el procesador de comandos sepa cómo interpretarlo.
pctFirstChild
Puntero al primer elemento secundario (4 bytes)
Puntero a la estructura DBCOMMANDTREE que representa el primer elemento secundario de este nodo del árbol de comandos.
pctNextSibling
Puntero al mismo nivel (4 bytes)
Puntero a la estructura DBCOMMANDTREE que representa el siguiente elemento secundario de este nodo del árbol de comandos.
value
Union representa directamente los campos que caben en 8 bytes. Los comentarios enumeran DBVALUEKIND y DBTYPE correspondientes a cada campo.
Unión que contendrá el valor de cada tipo de datos admitido por este proveedor OLE DB. Para cualquier tipo de datos de miembro de unión que contenga 8 bytes o menos, el propio valor se almacena aquí. De lo contrario, llvalue es un miembro pwszValue , un puntero a los datos.
Un miembro pwszValue es una cadena; su interpretación se deja al proveedor. En otras palabras, el consumidor debe comprender el método de resolución de nombres del proveedor. En el caso de los componentes de comando "pasados" a otro proveedor, se deja al proveedor receptor para interpretar la cadena.
El miembro pMoniker se usa para objetos vinculados sin resolver, en determinadas tablas y funciones.
El miembro pRowset se usa para hacer referencia a un conjunto de filas abierto actualmente como entrada para un comando. La mayoría de los proveedores producirán un error si se invoca un método IPersist mientras el árbol de comandos hace referencia a un conjunto de filas abierto.
El miembro pCommand hace referencia a otro objeto de comando como entrada para un comando. La mayoría de los proveedores producirán un error si se invoca un método IPersist mientras el árbol de comandos hace referencia a un objeto de comando que no admite monikers.
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
un DBVALUEKIND_BYREF genérico
value.pdbprobValue
DBVALUEKIND_PROBABILISTIC
value.pdbreldocValue
DBVALUEKIND_RELEVANTDOCUMENT
hrError
Indicador de error, detalles en Información de error extendida (4 bytes)
Muchas operaciones crean un entorno de enlace. Por ejemplo, una operación de DBOP_select tiene dos entradas: una tabla y un predicado booleano. (Para obtener más información sobre esta operación, vea Operadores con dos variantes para tablas ordenadas y no ordenadas). En virtud de la operación "select", la tabla se convierte en el entorno de enlace del predicado. Esto significa que el predicado puede hacer referencia libremente a los nombres de columna definidos en la tabla. Tenga en cuenta que no todos los enlaces deben proceder de la operación de tabla más cercana. Por ejemplo, puede haber varias operaciones de tabla dentro de una expresión "exist" y cualquier predicado puede hacer referencia a una columna definida fuera de la expresión "exist". (En SQL, esto se denomina "subconsulta correlacionada").
El tamaño típico de una estructura DBCOMMANDTREE para un nodo es de 24 bytes. Sin embargo, los operadores pueden almacenar información específica en el campo de valor del nodo. Para facilitar la programación, el campo de unión incluye ramas que representan algunos tipos comunes que pueden caber en 8 bytes. Los tipos de longitud variable se hacen referencia a través de un puntero a la estructura correspondiente (como DBTEXT). El discriminador de la unión es de tipo WORD en lugar de DBVALUEKIND para que sea posible almacenar valores de nodo como DBVALUEKIND_VECTOR | DBVALUEKIND_GUID, DBVALUEKIND_BYREF | DBVALUEKIND_UI4 o DBVALUEKIND_SAFEARRAY | DBVALUEKIND_I4.
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | cmdtree.h |