SQLTables
SQLTables podem ser executados em um cursor de servidor estático. Uma tentativa de executar SQLTables em um cursor atualizável (dinâmico ou conjunto de chaves) retornará SQL_SUCCESS_WITH_INFO indicando que o tipo de cursor foi alterado.
SQLTables relata tabelas de todos os bancos de dados quando o parâmetro CatalogName é SQL_ALL_CATALOGS e todos os outros parâmetros contêm valores padrão (ponteiros NULL).
Para relatar catálogos, esquemas e tipos de tabela disponíveis, o SQLTables faz uso especial de cadeias de caracteres vazias (ponteiros de bytes de comprimento zero). As cadeias de caracteres vazias não são os valores padrões (ponteiros NULL).
O driver ODBC do SQL Server Native Client dá suporte a informações de relatório para tabelas em servidores vinculados aceitando um nome de duas partes para o parâmetro CatalogName: Linked_Server_Name.Catalog_Name.
SQLTables retorna informações sobre todas as tabelas cujos nomes correspondem a TableName e pertencem ao usuário atual.
SQLTables e parâmetros com valor de tabela
Quando o atributo de instrução SQL_SOPT_SS_NAME_SCOPE tem o valor SQL_SS_NAME_SCOPE_TABLE_TYPE, em vez de seu valor padrão de SQL_SS_NAME_SCOPE_TABLE, SQLTables retorna informações sobre tipos de tabela. O valor TABLE_TYPE retornado para um tipo de tabela na coluna 4 do conjunto de resultados retornado por SQLTables é TABLE TYPE. Para obter mais informações sobre SQL_SOPT_SS_NAME_SCOPE, consulte SQLSetStmtAttr.
Tabelas, exibições e sinônimos compartilham um namespace comum que é diferente do namespace usado por tipos de tabela. Apesar de não ser possível ter uma tabela e uma exibição com o mesmo nome, é possível ter uma tabela de um tipo de tabela com o mesmo nome, no mesmo catálogo e no mesmo esquema.
Para obter mais informações sobre parâmetros com valor de tabela, consulte Parâmetros com valor de tabela (ODBC).
Exemplo
// 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);