SQLTables
SQLTables se puede ejecutar en un cursor de servidor estático. Un intento de ejecutar SQLTables en un cursor actualizable (dinámico o de conjunto de claves) devolverá SQL_SUCCESS_WITH_INFO, lo que indica que se ha cambiado el tipo de cursor.
SQLTables notifica las tablas de todas las bases de datos cuando el parámetro CatalogName es SQL_ALL_CATALOGS y todos los demás parámetros contienen los valores predeterminados (punteros NULL).
Para notificar catálogos, esquemas y tipos de tabla disponibles, SQLTables realiza un uso especial de cadenas vacías (punteros de bytes de longitud cero). Las cadenas vacías no son valores predeterminados (punteros NULL).
El controlador ODBC de SQL Server Native Client permite notificar información de tablas en servidores vinculados aceptando un nombre de dos partes para el parámetro CatalogName: Linked_Server_Name.Catalog_Name.
SQLTables devuelve información sobre las tablas cuyos nombres coinciden con TableName y son propiedad del usuario actual.
SQLTables y parámetros con valores de tabla
Cuando el atributo de instrucción SQL_SOPT_SS_NAME_SCOPE tiene el valor SQL_SS_NAME_SCOPE_TABLE_TYPE en lugar de su valor predeterminado SQL_SS_NAME_SCOPE_TABLE, SQLTables devuelve información sobre los tipos de tabla. El valor TABLE_TYPE devuelto para un tipo de tabla en la columna 4 del conjunto de resultados devuelto por SQLTables es TABLE TYPE. Para obtener más información sobre SQL_SOPT_SS_NAME_SCOPE, vea SQLSetStmtAttr.
Las tablas, vistas y sinónimos comparten un espacio de nombres común que es distinto del espacio de nombres que utilizan los tipos de tabla. Aunque no es posible tener una tabla y una vista con el mismo nombre, sí se puede tener una tabla y un tipo de tabla con el mismo nombre en el mismo catálogo y esquema.
Para obtener más información acerca de los parámetros con valores de tabla, vea Parámetros con valores de tabla (ODBC).
Ejemplo
// 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);