Partager via


Prise en charge des types de paramètre table OLE DB (méthodes)

Les méthodes OLE DB standard suivantes prennent en charge les paramètres table :

Méthode

Prise en charge des paramètres table

ITableDefinitionWithConstraints::CreateTableWithConstraints

Utilisée lorsque vous connaissez les informations de type du paramètre table, et que vous souhaitez instancier un objet d'ensemble de lignes de paramètre table en fonction des informations de type.

Pour plus d'informations, consultez « Scénario statique » dans Création d'un ensemble de lignes de paramètre table.

IOpenRowset::OpenRowset

Utilisée lorsque vous ne connaissez pas les informations de type d'un paramètre table, et que vous souhaitez instancier un objet d'ensemble de lignes de paramètre table en fonction des informations de métadonnées extraites du serveur.

Pour plus d'informations, consultez « Scénario dynamique » dans Création d'un ensemble de lignes de paramètre table.

ISSCommandWithParameters::SetParameterInfo

Pour spécifier un paramètre de commande de paramètre table, le consommateur spécifie le type de paramètre « table » ou « DBTYPE_TABLE » dans le membre pwszName de la structure DBPARAMBINDINFO. ulParamSize est défini sur ~0. Pour plus d'informations, consultez « Spécification de paramètre table » dans Exécution de commandes contenant des paramètres table.

ISSCommandWithParameters::SetParameterProperties

Définit les propriétés spécifiques aux paramètres table, telles que le nom de schéma, le nom de type, l'ordre des colonnes et les colonnes par défaut.

Le consommateur spécifie l'ordinal du paramètre dans le membre iOrdinal de la structure SSPARAMPROPS. Le jeu de propriétés demandé est DBPROPSET_SQLSERVERPARAMETER.

ISSCommandWithParameters::GetParameterInfo

Obtient les types de tous les paramètres d'une commande spécifiée.

Pour les paramètres table, le champ wType de la structure DBPARAMINFO a la valeur DBTYPE_TABLE. Le champ ulParamSize est défini sur ~ 0 pour indiquer une longueur inconnue.

ISSCommandWithParameters::GetParameterProperties

Obtient des informations de type supplémentaires pour les paramètres du type DBTYPE_TABLE.

Le consommateur spécifie l'ordinal du paramètre dans le membre iOrdinal de la structure SSPARAMPROPS. Le consommateur peut demander chacune des propriétés du jeu de propriétés DBPROPSET_SQLSERVERPARAMETER répertoriées sous ISSCommandWithParameters::SetParameterProperties.

Dans la mesure où le consommateur ne connaît pas le type de paramètre table, le fournisseur doit définir SSPROP_PARAM_TYPE_TYPENAME, SSPROP_PARAM_TYPE_SCHEMANAME et SSPROP_PARAM_TYPE_CATALOGNAME sur leurs valeurs correctes. Les propriétés restantes, SSPROP_PARAM_TABLE_DEFAULT_COLUMNS et SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER, utilisent leurs valeurs par défaut. Une fois que le consommateur a découvert le nom du type de paramètre table, il utilise IOpenRowset::OpenRowset pour créer une instance de ce paramètre table, en spécifiant le nom du type de paramètre table. Pour plus d'informations, consultez Découverte du type de paramètre table.

IRowsetInfo::GetProperties

Obtient les propriétés de l'ensemble de lignes de paramètre table. Le consommateur peut utiliser ces propriétés pour optimiser la configuration des liaisons.

IColumnsRowset::GetColumnsRowset

Récupère les informations de métadonnées relatives une table SQL Server. Pour les paramètres table, cette même interface fournit des informations de métadonnées détaillées à propos de chaque colonne, notamment les suivantes :

  • DBCOLUMN_FLAGS indique la possibilité de valeur NULL via le bit DBCOLUMNFLAGS_ISNULLABLE.

  • DBCOLUMN_ISUNIQUE indique si la colonne est une colonne d'identité.

  • DBCOLUMN_COMPUTEMODE indique si la colonne est calculée.

IAccessor::CreateAccessor

Pour lier un objet d'ensemble de lignes de paramètre table à un paramètre de commande, vous créez un accesseur dont le membre wType a la valeur DBTYPE_TABLE. La structure DBOBJECT contiendra IID_IRowset ou toute autre interface d'objet d'ensemble de lignes valide dans le membre iid. Les autres champs sont traités de la même façon que DBTYPE_IUNKNOWN.