Share via


Tabellenwertparameter-Typermittlung

Der Consumer, d. h. die Clientanwendung, die den SQL Server Native Client OLE DB-Anbieter verwendet, kann den Typ für jeden Befehlsparameter ermitteln, wenn der Befehlstext an den OLE DB-Anbieter weitergeleitet wurde. Nachdem der Typ des Tabellenwertparameters ermittelt wurde, kann der Consumer die Metadateninformationen für jede einzelne Spalte des Tabellenwertparameters ermitteln.

Die Typinformationen für Prozedurparameter werden von ICommandWithParameters::GetParameterInfo für die meisten Parametertypen unterstützt. Seit SQL Server 2005 und der Einführung von benutzerdefinierten Typen und dem xml-Datentyp reichte GetParameterInfo für diesen Zweck nicht mehr aus, da keine Informationen für benutzerdefinierte Typen (Name, Schema und Katalog) mit ICommandWithParameters angegeben werden konnten. Es wurde eine neue Schnittstelle, ISSCommandWithParameters, definiert, um erweiterte Typinformationen bereitzustellen.

Bei Tabellenwertparametern verwenden Sie auch die ISSCommandWithParameters-Schnittstelle, um ausführliche Informationen zu ermitteln. Der Client ruft ISSCommandWithParameters::GetParameterInfo auf, nachdem das Befehlsobjekt vorbereitet wurde. Bei Tabellenwertparametern wird das wType-Element der DBPARAMINFO-Struktur vom Anbieter auf DBTYPE_TABLE gesetzt. Das ulParamSize-Feld der DBPARAMINFO-Struktur hat einen Wert von ~ 0.

Der Consumer würde dann mit ISSCommandWithParamters::GetParameterProperties zusätzliche Eigenschaften anfordern (Katalogname, Schemaname und Name des Tabellenwertparameter-Typs, Spaltensortierung und Standardspalten).

Nachdem der Typname ermittelt wurde, muss der Consumer entweder IOpenRowset::OpenRowset aufrufen oder das DBSCHEMA_TABLE_TYPE_COLUMNS-Rowset durch Festlegen des Tabellenwertparameter-Typnamens als Tabellennamen abrufen, um die Informationen zu den einzelnen Spalten zu erhalten.

Siehe auch

Konzepte