SQLTables
SQLTables peut être exécuté sur un curseur côté serveur statique. Une tentative d'exécution de SQLTables sur un curseur pouvant être mis à jour (dynamique ou jeu de clés) retourne SQL_SUCCESS_WITH_INFO, indiquant que le type de curseur a été modifié.
SQLTables signale les tables de toutes les bases de données lorsque le paramètre CatalogName est SQL_ALL_CATALOGS et que tous les autres paramètres contiennent des valeurs par défaut (pointeurs NULL).
Pour signaler les catalogues, schémas et types de table disponibles, SQLTables fait une utilisation particulière des chaînes vides (pointeurs d'octets de longueur nulle). Les chaînes vides ne sont pas des valeurs par défaut (pointeurs NULL).
Le pilote ODBC SQL Server Native Client prend en charge les informations de création de rapport pour les tables des serveurs liés en acceptant un nom en deux parties pour le paramètre CatalogName : Linked_Server_Name.Catalog_Name.
SQLTables retourne les informations sur les tables dont les noms correspondent à TableName et qui sont la propriété de l'utilisateur en cours.
SQLTables et paramètres table
Lorsque l'attribut d'instruction SQL_SOPT_SS_NAME_SCOPE a la valeur SQL_SS_NAME_SCOPE_TABLE_TYPE, plutôt que sa valeur par défaut SQL_SS_NAME_SCOPE_TABLE, SQLTables retourne les informations sur les types de table. La valeur TABLE_TYPE retournée pour un type de table de la colonne 4 du jeu de résultats retourné par SQLTables est TABLE TYPE. Pour plus d'informations sur SQL_SOPT_SS_NAME_SCOPE, consultez SQLSetStmtAttr.
Les tables, les vues et les synonymes partagent un espace de noms commun, distinct de l'espace de noms utilisé par les types de table. Bien qu'il ne soit pas possible d'avoir une table et une vue ayant le même nom, vous pouvez avoir une table et un type de table avec le même nom dans le même catalogue et le même schéma.
Pour plus d'informations sur les paramètres table, consultez Paramètres table (ODBC).
Exemple
// Get a list of all tables in the current database.
SQLTables(hstmt, NULL, 0, NULL, 0, NULL, 0, NULL,0);
// Get a list of all tables in all databases.
SQLTables(hstmt, (SQLCHAR*) "%", SQL_NTS, NULL, 0, NULL, 0, NULL,0);
// Get a list of databases on the current connection's server.
SQLTables(hstmt, (SQLCHAR*) "%", SQL_NTS, (SQLCHAR*)"", 0, (SQLCHAR*)"",
0, NULL, 0);