Partager via


Création d'un ensemble de lignes de paramètre table

Bien que les consommateurs puissent fournir n'importe quel objet d'ensemble de lignes pour les paramètres table, les objets d'ensemble de lignes communs sont implémentés dans des banques de données principales, ce qui limite leurs performances. Pour cette raison, le fournisseur OLE DB SQL Server Native Client permet aux consommateurs de créer un objet d’ensemble de lignes spécialisé sur des données en mémoire. Cet objet spécial d’ensemble de lignes en mémoire est un nouvel objet COM appelé un ensemble de lignes de paramètre table. Il fournit des fonctionnalités similaires aux jeux de paramètres.

Les objets d'ensemble de lignes de paramètre table sont créés explicitement par le consommateur pour les paramètres d'entrée via plusieurs interfaces de niveau session. Il existe une instance d'un objet d'ensemble de lignes de paramètre table par paramètre table. Le consommateur peut créer les objets d'ensemble de lignes de paramètre table soit en fournissant des informations de métadonnées qui sont déjà connues (scénario statique), soit en révélant ces informations par le biais des interfaces du fournisseur (scénario dynamique). Les sections qui suivent décrivent ces deux scénarios :

Scénario statique

Lorsque les informations de type sont connues, le consommateur utilise ITableDefinitionWithConstraints::CreateTableWithConstraints pour instancier un objet d'ensemble de lignes de paramètre table qui correspond à un paramètre table.

Le champ guid (paramètre pTableID) contient le GUID spécial (CLSID_ROWSET_TVP). Le membre pwszName contient le nom du type de paramètre table que le consommateur souhaite instancier. Le champ eKind sera défini sur DBKIND_GUID_NAME. Ce nom est requis lorsque l'instruction est une instruction SQL ad hoc ; le nom est facultatif s'il s'agit d'un appel de procédure.

Pour l'agrégation, le consommateur passe le paramètre pUnkOuter avec l'IUnknown de contrôle.

Les propriétés de l’objet d’ensemble de lignes de paramètres table étant en lecture seule, le consommateur n’est pas censé définir des propriétés dans rgPropertySets.

Pour le membre rgPropertySets de chaque structure DBCOLUMNDESC, le consommateur peut spécifier des propriétés supplémentaires pour chaque colonne. Ces propriétés appartiennent au jeu de propriétés DBPROPSET_SQLSERVERCOLUMN. Elles vous permettent de spécifier les paramètres calculés et les paramètres par défaut de chaque colonne. Elles prennent également en charge les propriétés de colonnes existantes, telles que la possibilité de valeur Null et l'identité.

Pour récupérer les informations correspondantes d’un objet d’ensemble de lignes de paramètre table, le consommateur utilise IRowsetInfo::GetProperties.

Pour récupérer des informations sur les status null, uniques, calculées et mises à jour de chaque colonne, le consommateur utilise IColumnsRowset::GetColumnsRowset ou IColumnsInfo::GetColumnInfo. Ces méthodes fournissent des informations détaillées sur chaque colonne de l'ensemble de lignes du paramètre table.

Le consommateur spécifie le type de chaque colonne du paramètre table. Cela est similaire à la façon dont les colonnes sont spécifiées lorsqu’une table est créée dans SQL Server. Le consommateur obtient un objet d’ensemble de lignes de paramètre table à partir du fournisseur OLE DB SQL Server Native Client via le paramètre de sortie ppRowset.

Scénario Dynamique

Lorsque le consommateur n’a pas d’informations sur le type, il doit utiliser IOpenRowset::OpenRowset pour instancier des objets d’ensemble de lignes de paramètres table. Tout ce que le consommateur doit fournir au fournisseur est le nom du type.

Dans ce scénario, le fournisseur obtient les informations de type d'un objet d'ensemble de lignes de paramètre table à partir du serveur au nom du consommateur.

Les paramètres pTableID et pUnkOuter doivent être définis comme dans le scénario statique. Le SQL Server Native Client fournisseur OLE DB obtient ensuite les informations de type (informations et contraintes de colonne) à partir du serveur et retourne un objet d’ensemble de lignes de paramètres table via le paramètre ppRowset. Cette opération requiert une communication avec le serveur, et par conséquent ne fonctionne pas aussi bien que le scénario statique. Le scénario dynamique fonctionne uniquement avec des appels de procédure paramétrables.

Voir aussi

Paramètres table (OLE DB)
Utiliser des paramètres table (OLE DB)