Freigeben über


OLE DB-Unterstützung von Tabellenwertparameter-Typen (Methoden)

Die folgenden Standard-OLE DB-Methoden unterstützen Tabellenwertparameter:

Methode

Tabellenwertparameter-Unterstützung

ITableDefinitionWithConstraints::CreateTableWithConstraints

Wird verwendet, wenn Sie den Typ des Tabellenwertparameters kennen und ein Tabellenwertparameter-Rowsetobjekt anhand der Typinformation instanziieren möchten.

Weitere Informationen zu diesem "statischen Szenario" finden Sie unter Tabellenwertparameter-Rowseterstellung.

IOpenRowset::OpenRowset

Wird verwendet, wenn Sie den Typ eines Tabellenwertparameters nicht kennen und ein Tabellenwertparameter-Rowsetobjekt anhand der vom Server abgerufenen Metadateninformationen instanziieren möchten.

Weitere Informationen zu diesem "dynamischen Szenario" finden Sie unter Tabellenwertparameter-Rowseterstellung.

ISSCommandWithParameters::SetParameterInfo

Zur Bezeichnung eines Tabellenwertparameter-Befehlsparameters gibt der Consumer im pwszName-Element der DBPARAMBINDINFO-Struktur den Typ des Parameters als "Tabelle" oder DBTYPE_TABLE an. Der ulParamSize-Wert wird auf ~0 festgelegt. Weitere Informationen finden Sie unter "Tabellenwertparameter-Spezifikation" in Ausführen von Befehlen, die Tabellenwertparameter enthalten.

ISSCommandWithParameters::SetParameterProperties

Legt spezielle Eigenschaften für Tabellenwertparameter fest, z. B. Schemaname, Typname, Spaltenreihenfolge und Standardspalten.

Der Consumer gibt die Ordnungszahl des Parameterwerts unter iOrdinal in der SSPARAMPROPS-Struktur an. Die angeforderte Eigenschaftengruppe ist DBPROPSET_SQLSERVERPARAMETER.

ISSCommandWithParameters::GetParameterInfo

Ruft die Typen aller Parameter zu einem angegebenen Befehl ab.

Für Tabellenwertparameter verfügt das wType-Feld in der DBPARAMINFO-Struktur über den Typ DBTYPE_TABLE. Das ulParamSize-Feld wird auf ~ 0 festgelegt, um anzugeben, dass die Länge unbekannt ist.

ISSCommandWithParameters::GetParameterProperties

Ruft weitere Typinformationen für Parameter des DBTYPE_TABLE-Typs ab.

Der Consumer gibt die Ordnungszahl des Parameterwerts im iOrdinal-Element der SSPARAMPROPS-Struktur an. Der Consumer kann beliebige Eigenschaften der DBPROPSET_SQLSERVERPARAMETER-Eigenschaftengruppe anfordern, die unter ISSCommandWithParameters::SetParameterProperties aufgeführt sind.

Da der Consumer den Tabellenwertparameter-Typ nicht kennt, muss der Anbieter für SSPROP_PARAM_TYPE_TYPENAME, SSPROP_PARAM_TYPE_SCHEMANAME und SSPROP_PARAM_TYPE_CATALOGNAME die korrekten Werte festlegen. Die übrigen Eigenschaften, SSPROP_PARAM_TABLE_DEFAULT_COLUMNS und SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER, behalten ihre Standardwerte. Nachdem der Consumer den Tabellenwertparameter-Typnamen erkannt hat, erstellt er mithilfe von IOpenRowset::OpenRowset eine Instanz dieses Tabellenwertparameters. Dabei wird der Name des Tabellenwertparameter-Typs angegeben. Weitere Informationen finden Sie unter Tabellenwertparameter-Typermittlung.

IRowsetInfo::GetProperties

Ruft Tabellenwertparameter-Rowseteigenschaften ab. Der Consumer kann diese Eigenschaften verwenden, um Bindungen optimal einzurichten.

IColumnsRowset::GetColumnsRowset

Ruft Metadateninformationen zu einer SQL Server-Tabelle ab. Für Tabellenwertparameter stellt diese Schnittstelle ausführliche Metadateninformationen über jede Spalte bereit, darunter:

  • DBCOLUMN_FLAGS gibt die NULL-Zulässigkeit durch das DBCOLUMNFLAGS_ISNULLABLE-Bit an.

  • DBCOLUMN_ISUNIQUE gibt an, ob es sich bei der Spalte um eine Identitätsspalte handelt.

  • DBCOLUMN_COMPUTEMODE gibt an, ob die Spalte berechnet wird.

IAccessor::CreateAccessor

Um ein Tabellenwertparameter-Rowsetobjekt an einen Befehlsparameter zu binden, erstellen Sie einen Accessor. Für das wType-Element wird dabei DBTYPE_TABLE festgelegt. Die DBOBJECT-Struktur enthält IID_IRowset oder eine beliebige andere gültige Rowsetobjekt-Schnittstelle im iid-Element. Die übrigen Felder werden ähnlich behandelt wie DBTYPE_IUNKNOWN.