Données retournées par les fonctions de catalogue

Chaque fonction catalogue retourne des données sous la forme d’un jeu de résultats. Ce jeu de résultats n’est différent d’aucun autre jeu de résultats. Il est généralement généré par une instruction SELECT prédéfinie paramétrable codée en dur dans le pilote ou stockée dans une procédure dans la source de données. Pour plus d’informations sur la récupération des données à partir d’un jeu de résultats, consultez Le jeu de résultats a-t-il été créé ?.

Le jeu de résultats pour chaque fonction de catalogue est décrit dans l’entrée de référence pour cette fonction. Outre les colonnes répertoriées, le jeu de résultats peut contenir des colonnes spécifiques au pilote après la dernière colonne prédéfinie. Ces colonnes (le cas échéant) sont décrites dans la documentation du pilote.

Les applications doivent lier des colonnes spécifiques au pilote par rapport à la fin du jeu de résultats. Autrement dit, ils doivent calculer le nombre d’une colonne spécifique au pilote comme nombre de la dernière colonne - récupérée avec SQLNumResultCols - moins le nombre de colonnes qui se produisent après la colonne requise. Cela permet de modifier l’application lorsque de nouvelles colonnes sont ajoutées au jeu de résultats dans les futures versions d’ODBC ou du pilote. Pour que ce schéma fonctionne, les pilotes doivent ajouter de nouvelles colonnes spécifiques au pilote avant les anciennes colonnes spécifiques au pilote afin que les numéros de colonne ne changent pas par rapport à la fin du jeu de résultats.

Les identificateurs retournés dans le jeu de résultats ne sont pas entre guillemets, même s’ils contiennent des caractères spéciaux. 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 (« ) et que la table Comptes payables contient une colonne nommée Customer Name. Dans la ligne retournée par SQLColumns pour cette colonne, la valeur de la colonne TABLE_NAME est Comptes payables, et non « Comptes payables », et la valeur de la colonne COLUMN_NAME est Nom du client, et non « Nom du client ». Pour récupérer les noms des clients dans la table Comptes payables, l’application cite ces noms :

SELECT "Customer Name" FROM "Accounts Payable"  

Pour plus d’informations, consultez Identificateurs entre guillemets.

Les fonctions de catalogue sont basées sur un modèle d’autorisation de type SQL dans lequel une connexion est établie en fonction d’un nom d’utilisateur et d’un mot de passe, et seules les données pour lesquelles l’utilisateur a un privilège sont retournés. La protection par mot de passe des fichiers individuels, qui ne s’intègre pas dans ce modèle, est définie par le pilote.

Les jeux de résultats retournés par les fonctions de catalogue ne sont presque jamais pouvant être mis à jour et les applications ne doivent pas s’attendre à pouvoir modifier la structure de la base de données en modifiant les données de ces jeux de résultats.