规范: | 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 */
函数自变量
数据类型 | 自变量 | 使用 | 描述 |
---|---|---|---|
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 列的实际长度。
列名 | 数据类型 | 描述 |
---|---|---|
TABLE_CAT | VARCHAR (128) | 这始终是长度为零的字符串。 |
TABLE_SCHEM | VARCHAR (128) | 这始终是长度为零的字符串。 |
TABLE_NAME | VARCHAR (128) | 表名。 |
TABLE_TYPE | VARCHAR (128) | 标识 TABLE_NAME 列中的名称给定的类型。它始终具有字符串值“TABLE”。 |
REMARKS | VARCHAR(254) | 包含有关该表的描述性信息。 |
返回码
诊断
SQLSTATE | 描述 | 解释 |
---|---|---|
HY001 | 内存分配失败。 | DB2 CLI 无法分配支持函数的执行或完成所需的内存。 |
HY014 | 不再有句柄。 | 因为内部资源问题,DB2 CLI 无法分配句柄。 |
HY090 | 字符串或缓冲区长度无效。 | 其中一个名称长度自变量的值小于 0,但不等于 SQL_NTS。
超出该数据源支持的最大值的名称长度自变量之一的有效性。最大受支持值可通过调用 SQLGetInfo() 函数获取。 |
限制
无。
相关参考