Estrutura DBCOMMANDTREE (cmdtree.h)

Observação

O Serviço de Indexação não tem mais suporte a partir do Windows XP e não está disponível para uso a partir de Windows 8. Em vez disso, use a pesquisa do lado do cliente da Pesquisa do Windows e o Microsoft Search Server Express para pesquisa no lado do servidor.

A estrutura DBCOMMANDTREE é a estrutura de dados primária usada para representar qualquer nó em uma árvore de comandos OLE DB, conforme descrito na seção Operadores de Manipulação de Dados e Operadores de Definição de Dados dessa referência. Essa estrutura é usada para cada nó DML (linguagem de manipulação de dados) ou DDL (linguagem de definição de dados) em uma árvore de comandos OLE DB.

Sintaxe

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;

Membros

op

Identificador do operador (2 bytes)

Um valor do tipo DBCOMMANDOP da enumeração DBCOMMANDOPENUM . Ele especifica um operador dos Operadores de Manipulação de Dados ou dos Operadores de Definição de Dados que define a operação a ser realizada no campo associado.

wKind

Discriminatório para a união a seguir (2 bytes)

Um valor do tipo DBVALUEKIND do tipo enumerado DBVALUEKINDENUM . Ele define o tipo de dados do membro da união associado para que o processador de comando saiba como interpretá-lo.

pctFirstChild

Ponteiro para o primeiro filho (4 bytes)

Um ponteiro para a estrutura DBCOMMANDTREE que representa o primeiro filho desse nó da árvore de comando.

pctNextSibling

Ponteiro para irmão (4 bytes)

Um ponteiro para a estrutura DBCOMMANDTREE que representa o próximo filho desse nó da árvore de comando.

value

A união representa diretamente os campos que se encaixam em 8 bytes. Os comentários listam DBVALUEKIND e DBTYPE correspondentes a cada campo.

Uma união para manter o valor de cada tipo de dados com suporte por esse provedor OLE DB. Para qualquer tipo de dados de membro sindical que contenha 8 bytes ou menos, o valor em si é armazenado aqui. Caso contrário, llvalue é um membro pwszValue , um ponteiro para os dados.

Um membro pwszValue é uma cadeia de caracteres; sua interpretação é deixada para o provedor. Em outras palavras, o consumidor deve entender o método de resolução de nomes do provedor. Para componentes de comando "passados" para outro provedor, cabe ao provedor receptor interpretar a cadeia de caracteres.

O membro pMoniker é usado para objetos vinculados não resolvidos, em tabelas e funções específicas.

O membro pRowset é usado para fazer referência a um conjunto de linhas aberto no momento como entrada para um comando. A maioria dos provedores falhará se um método IPersist for invocado enquanto a árvore de comando se referir a um conjunto de linhas aberto.

O membro pCommand faz referência a outro objeto de comando como entrada para um comando. A maioria dos provedores falhará se um método IPersist for invocado enquanto a árvore de comando se referir a um objeto de comando que não dá suporte a 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

um DBVALUEKIND_BYREF genérico

value.pdbprobValue

DBVALUEKIND_PROBABILISTIC

value.pdbreldocValue

DBVALUEKIND_RELEVANTDOCUMENT

hrError

Indicador de erro, detalhes em informações de erro estendido (4 bytes)

Comentários

Muitas operações criam um ambiente de associação. Por exemplo, uma operação de DBOP_select tem duas entradas: uma tabela e um predicado booliano. (Para obter mais informações sobre essa operação, consulte Operadores com duas variantes para tabelas ordenadas e não ordenadas.) Em virtude da operação "select", a tabela se torna o ambiente de associação para o predicado. Isso significa que o predicado pode referenciar livremente os nomes de coluna definidos na tabela. Observe que nem todas as associações devem vir da operação de tabela mais próxima. Por exemplo, pode haver várias operações de tabela dentro de uma expressão "exist" e qualquer predicado pode fazer referência a uma coluna definida fora da expressão "exist". (No SQL, isso é chamado de "subconsulta correlacionada".

O tamanho típico de uma estrutura DBCOMMANDTREE para um nó é de 24 bytes. No entanto, os operadores podem armazenar algumas informações específicas no campo de valor do nó. Para conveniência de programação, o campo união inclui branches que representam alguns tipos comuns que podem caber dentro de 8 bytes. Tipos de comprimento variável são referenciados por meio de um ponteiro para a estrutura correspondente (como DBTEXT). O discriminatório para a união é do tipo WORD em vez de DBVALUEKIND para que seja possível armazenar valores de nó, como DBVALUEKIND_VECTOR | DBVALUEKIND_GUID, DBVALUEKIND_BYREF | DBVALUEKIND_UI4 ou DBVALUEKIND_SAFEARRAY | DBVALUEKIND_I4.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho cmdtree.h