Arguments de valeur de modèle

Certains arguments dans les fonctions de catalogue, tels que l’argument TableName dans SQLTables, acceptent les modèles de recherche. Ces arguments acceptent des modèles de recherche si l’attribut d’instruction SQL_ATTR_METADATA_ID est défini sur SQL_FALSE ; il s’agit d’arguments d’identificateur qui n’acceptent pas de modèle de recherche si cet attribut est défini sur SQL_TRUE.

Les caractères du modèle de recherche sont les suivants :

  • Trait de soulignement (_), qui représente n’importe quel caractère unique.

  • Signe de pourcentage (%), qui représente une séquence de zéro ou plusieurs caractères.

  • Caractère d’échappement, spécifique au pilote et utilisé pour inclure des traits de soulignement, des signes de pourcentage et le caractère d’échappement en tant que littéraux. Si le caractère d’échappement précède un caractère non spécial, le caractère d’échappement n’a aucune signification particulière. Si le caractère d’échappement précède un caractère spécial, il échappe le caractère spécial. Par exemple, « \a » serait traité comme deux caractères, « \ » et « a », mais « \% » serait traité comme le caractère unique non spécial « % ».

Le caractère d’échappement est récupéré avec l’option SQL_SEARCH_PATTERN_ESCAPE dans SQLGetInfo. Il doit précéder tout trait de soulignement, signe de pourcentage ou caractère d’échappement dans un argument qui accepte les modèles de recherche pour inclure ce caractère en tant que littéral. Les exemples sont présentés dans le tableau suivant.

Modèle de recherche Description
%A% Tous les identificateurs contenant la lettre A
ABC_ Les quatre identificateurs de caractères commençant par ABC
ABC\_ L’identificateur ABC_, en supposant que le caractère d’échappement est une barre oblique inverse (\)
\\% Tous les identificateurs commençant par une barre oblique inverse (\), en supposant que le caractère d’échappement est une barre oblique inverse

Des précautions particulières doivent être prises pour échapper les caractères de modèle de recherche dans les arguments qui acceptent des modèles de recherche. Cela est particulièrement vrai pour le caractère de soulignement, qui est couramment utilisé dans les identificateurs. Une erreur courante dans les applications consiste à récupérer une valeur d’une fonction de catalogue et à passer cette valeur à un argument de modèle de recherche dans une autre fonction de catalogue. Par exemple, supposons qu’une application récupère le nom de la table MY_TABLE à partir du jeu de résultats pour SQLTables et la transmet à SQLColumns pour récupérer une liste de colonnes dans MY_TABLE. Au lieu d’obtenir les colonnes pour MY_TABLE, l’application obtient les colonnes de toutes les tables qui correspondent au modèle de recherche MY_TABLE, comme MY_TABLE, MY1TABLE, MY2TABLE, etc.

Remarque

ODBC 2.Les pilotes x ne prennent pas en charge les modèles de recherche dans l’argument CatalogName dans SQLTables. Les pilotes ODBC 3*.x* acceptent les modèles de recherche dans cet argument si l’attribut d’environnement SQL_ATTR_ ODBC_VERSION est défini sur SQL_OV_ODBC3 ; ils n’acceptent pas les modèles de recherche dans cet argument s’ils sont définis sur SQL_OV_ODBC2.

Le passage d’un pointeur Null à un argument de modèle de recherche ne limite pas la recherche de cet argument ; autrement dit, un pointeur Null et le modèle de recherche % (tous les caractères) sont équivalents. Toutefois, un modèle de recherche de longueur nulle ( autrement dit, un pointeur valide vers une chaîne de longueur zéro ) correspond uniquement à la chaîne vide ( » « ).