DBCOMMANDTREE 結構 (cmdtree.h)

注意

自 Windows XP 起,不再支援編製索引服務,無法從 Windows 8 使用。 請改用 Windows 搜尋 進行客戶端搜尋,並使用 Microsoft Search Server Express 進行伺服器端搜尋。

DBCOMMANDTREE 結構是用來代表 OLE DB 命令樹中任何節點的主要數據結構,如本參考的數據操作運算符和數據定義運算符一節所述。 此結構用於 OLE DB 命令樹中每個資料操作語言 (DML) 或資料定義語言 (DDL) 節點。

語法

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 個字節)

DBCOMMANDOPENUM 列舉中的 DBCOMMANDOP 類型值。 它會從 數據操作運算符 或數據定義運算元指定運算符,該運算元會定義要發生在相關聯字段上的作業。

wKind

下列等位的辨別子 (2 個字節)

來自 DBVALUEKINDENUM 列舉型別的 DBVALUEKIND 型別值。 它會定義相關聯等位成員的數據類型,讓命令處理器知道如何解譯它。

pctFirstChild

第一個子 (4 個字節的指標)

DBCOMMANDTREE 結構的指標,表示命令樹之這個節點的第一個子系。

pctNextSibling

同層級 (4 個字節的指標)

DBCOMMANDTREE 結構的指標,表示命令樹之這個節點的下一個子系。

value

等位直接代表符合8個字節的欄位。 批注會列出對應至每個欄位的 DBVALUEKIND 和 DBTYPE。

要保存這個 OLE DB 提供者所支援之每個數據類型值的等位。 對於保存8個字節或更少位元組的任何等位成員數據類型,值本身會儲存在這裡。 否則, llvaluepwszValue 成員,這是數據的指標。

pwszValue 成員是字串;其解譯會保留給提供者。 換句話說,取用者必須瞭解提供者的名稱解析方法。 對於「傳遞」至另一個提供者的命令元件,它會保留給接收提供者來解譯字串。

pMoniker 成員用於未解析的連結物件,特別是數據表和函式。

pRowset 成員可用來參考目前開啟的數據列集做為命令的輸入。 如果在命令樹參考開啟的數據列集時叫用 IPersist 方法,大部分的提供者都會失敗。

pCommand 成員會參考另一個命令物件做為命令的輸入。 如果在命令樹參考不支援Monikers的命令物件時叫用 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作業有兩個輸入:數據表和布爾述詞。 (如需此作業的詳細資訊,請參閱 具有 Two Variants for Ordered 和 Non-Ordered Tables 的運算符。) 透過「選取」作業,數據表會變成述詞的系結環境。 這表示述詞可以自由參考數據表中定義的數據行名稱。 請注意,並非所有系結都必須來自最接近的數據表作業。 例如,「存在」表達式內可能會有多個數據表作業,而任何述詞可能會參考在「存在」表達式外部定義的數據行。 (在 SQL 中,這稱為「相互關聯的子查詢」。)

節點的 DBCOMMANDTREE 結構一般大小為 24 個字節。 不過,運算子可能會將某些特定資訊儲存在節點的值欄位中。 為了方便程序設計,等位位元元包含代表一些可容納在8個字節內之常見類型的分支。 可變長度類型是透過對應 (結構的指標來參考,例如 DBTEXT) 。 等位的辨別子類型為 WORD ,而不是 DBVALUEKIND ,因此可以儲存節點值,例如 DBVALUEKIND_VECTOR |DBVALUEKIND_GUID,DBVALUEKIND_BYREF |DBVALUEKIND_UI4或DBVALUEKIND_SAFEARRAY |DBVALUEKIND_I4。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 cmdtree.h