Partager via


Arguments d’identificateur

Si une chaîne dans un argument d’identificateur est entre guillemets, le pilote supprime les espaces de début et de fin et traite littéralement la chaîne entre guillemets. Si la chaîne n’est pas entre guillemets, le pilote supprime les espaces de fin et plie la chaîne en majuscules. La définition d’un argument d’identificateur sur un pointeur Null retourne SQL_ERROR et SQLSTATE HY009 (utilisation non valide du pointeur Null), sauf si l’argument est un nom de catalogue et que les catalogues ne sont pas pris en charge.

Ces arguments sont traités comme des arguments d’identificateur si l’attribut d’instruction SQL_ATTR_METADATA_ID est défini sur SQL_TRUE. Dans ce cas, le trait de soulignement (_) et le signe de pourcentage (%) seront traités comme le caractère réel, et non comme un caractère de modèle de recherche. Ces arguments sont traités comme un argument ordinaire ou un argument de modèle, selon l’argument, si cet attribut est défini sur SQL_FALSE.

Bien que les identificateurs contenant des caractères spéciaux doivent être entre guillemets dans les instructions SQL, ils ne doivent pas être entre guillemets lorsqu’ils sont passés en tant qu’arguments de fonction catalogue, car les guillemets passés aux fonctions de catalogue sont interprétés littéralement. Par exemple, supposons que le caractère de guillemet d’identificateur (qui est spécifique au pilote et retourné via SQLGetInfo) soit un guillemet double (« ). Le premier appel à SQLTables retourne un jeu de résultats contenant des informations sur la table Comptes payables, tandis que le deuxième appel retourne des informations sur la table « Comptes payables », ce qui n’est probablement pas ce qui était prévu.

SQLTables(hstmt1, NULL, 0, NULL, 0, "Accounts Payable", SQL_NTS, NULL, 0);  
SQLTables(hstmt2, NULL, 0, NULL, 0, "\"Accounts Payable\"", SQL_NTS, NULL, 0);  

Les identificateurs entre guillemets sont utilisés pour distinguer un vrai nom de colonne d’une pseudo-colonne du même nom, tel que ROWID dans Oracle. Si « ROWID » est passé dans un argument d’une fonction de catalogue, la fonction fonctionne avec la pseudo-colonne ROWID s’il existe. Si la pseudo-colonne n’existe pas, la fonction fonctionne avec la colonne « ROWID ». Si ROWID est passé dans un argument d’une fonction de catalogue, la fonction fonctionne avec la colonne ROWID.

Pour plus d’informations sur les identificateurs entre guillemets, consultez Identificateurs entre guillemets.