SQLTables - 获取表信息

用途

规范: DB2 CLI 2.1 ODBC 1.0

SQLTables() 返回表名列表和存储在连接的数据源的系统目录中的相关信息。表名列表将作为结果集返回,可使用用于处理查询生成的结果集的函数来检索它。

语法

SQLRETURN   SQLTables        (
                SQLHSTMT          StatementHandle,   /* hstmt */
                SQLCHAR      FAR  *CatalogName,      /* szCatalogName */
                SQLSMALLINT       NameLength1,       /* cbCatalogName */
                SQLCHAR      FAR  *SchemaName,       /* szSchemaName */
                SQLSMALLINT       NameLength2,       /* cbSchemaName */
                SQLCHAR      FAR  *TableName,        /* szTableName */
                SQLSMALLINT       NameLength3,       /* cbTableName */
                SQLCHAR      FAR  *TableType,        /* szTableType */
                SQLSMALLINT       NameLength4);      /* cbTableType */

函数自变量

表 89. SQLTables 自变量

数据类型 自变量 使用 描述
SQLHSTMT StatementHandle 输入 语句句柄。
SQLCHAR CatalogName 输入 可能包含用来限定结果集的 pattern-value 的缓冲区。Catalog 是由 3 部分组成的表名的第 1 部分。

此字段将被 DB2 Everyplace 忽略。

SQLSMALLINT NameLength1 输入 CatalogName 的长度。

此字段将被 DB2 Everyplace 忽略。

SQLCHAR SchemaName 输入 可能包含用来按模式名限定结果集的 pattern-value 的缓冲区。

此字段将被 DB2 Everyplace 忽略。

SQLSMALLINT NameLength2 输入 SchemaName 的长度。

此字段将被 DB2 Everyplace 忽略。

SQLCHAR TableName 输入 可能包含用来按表名限定结果集的 pattern-value 的缓冲区。
SQLSMALLINT NameLength3 输入 TableName 的长度。
SQLCHAR TableType 输入 DB2 Everyplace 仅支持类型 TABLE。此字段将被 DB2 Everyplace 忽略。
SQLSMALLINT NameLength4 输入 此字段将被 DB2 Everyplace 忽略。

注意,TableName 自变量将接受搜索模式。

用法

将在结果集中返回表信息,在该结果集中每个表由结果集的一行表示。

有时应用程序会使用空指针 TableName 自变量调用 SQLTables(),这样就不会尝试限制返回的结果集。对于包含大量表的一些数据源,此方案使得结果集极其大且检索时间会很长。

SQLTables() 返回的结果集包含的列以给定顺序列示在表 90 中。这些行是按 TABLE_NAME 排序的。

最好不要经常调用 SQLTables(),原因是在许多情况下它们都映射至对系统目录的复杂且高成本的查询。应保存结果而不是重复调用。

已使用最大长度属性 128 声明目录函数结果集的 VARCHAR 列,以便与 SQL92 限制一致。因为 DB2 名称少于 128 个字符,所以应用程序可选择总是为输出缓冲区保留 128 个字符(加上 null 终止符),或者使用 SQL_MAX_TABLE_NAME_LEN 调用 SQLGetInfo() 以确定连接的 DBMS 支持的 TABLE_NAME 列的实际长度。

表 90. SQLTables 返回的列

列名 数据类型 描述
TABLE_CAT VARCHAR (128) 这始终是长度为零的字符串。
TABLE_SCHEM VARCHAR (128) 这始终是长度为零的字符串。
TABLE_NAME VARCHAR (128) 表名。
TABLE_TYPE VARCHAR (128) 标识 TABLE_NAME 列中的名称给定的类型。它始终具有字符串值“TABLE”。
REMARKS VARCHAR(254) 包含有关该表的描述性信息。

返回码

诊断

表 91. SQLTables SQLSTATE

SQLSTATE 描述 解释
HY001 内存分配失败。 DB2 CLI 无法分配支持函数的执行或完成所需的内存。
HY014 不再有句柄。 因为内部资源问题,DB2 CLI 无法分配句柄。
HY090 字符串或缓冲区长度无效。 其中一个名称长度自变量的值小于 0,但不等于 SQL_NTS。

超出该数据源支持的最大值的名称长度自变量之一的有效性。最大受支持值可通过调用 SQLGetInfo() 函数获取。

限制

无。

相关参考