SQLColumns

无论 CatalogNameTableNameColumnName 参数是否存在值,SQLColumns 都返回 SQL_SUCCESS。在这些参数中使用无效的值时,SQLFetch 会返回 SQL_NO_DATA。

注意注意

对于大值类型,将返回值为 SQL_SS_LENGTH_UNLIMITED 的所有长度参数。

可以对静态服务器游标执行 SQLColumns。尝试对可更新的(动态或键集)游标执行 SQLColumns 时,将返回 SQL_SUCCESS_WITH_INFO 以指示游标类型已更改。

SQL Server Native Client ODBC 驱动程序通过接受由两部分组成的 CatalogName 参数名称 Linked_Server_Name.Catalog_Name,支持报告链接服务器上的表的信息。

对于未在 TableName 中使用通配符的 ODBC 2.x 应用程序,SQLColumns 返回有关其名称与 TableName 匹配且表所有者为当前用户的所有表的信息。如果当前用户拥有的表的名称与 TableName 参数不匹配,SQLColumns 返回有关表所有者为其他用户且表名与 TableName 参数相匹配的所有表的信息。对于使用通配符的 ODBC 2.x 应用程序,SQLColumns 返回其名称与 TableName 匹配的所有表。对于 ODBC 3.x 应用程序,SQLColumns 返回其名称与 TableName 匹配的所有表,而不管其所有者如何或者是否使用了通配符。

下表列出了结果集返回的列:

列名

说明

DATA_TYPE

对于 varchar(max) 数据类型,返回 SQL_VARCHAR、SQL_VARBINARY 或 SQL_WVARCHAR。

TYPE_NAME

对于 varchar(max)varbinary(max)nvarchar(max) 数据类型,返回“varchar”、“varbinary”或“nvarchar”。

COLUMN_SIZE

对于 varchar(max) 数据类型,返回 SQL_SS_LENGTH_UNLIMITED,以指示列大小不受限制。

BUFFER_LENGTH

对于 varchar(max) 数据类型,返回 SQL_SS_LENGTH_UNLIMITED,以指示缓冲区大小不受限制。

SQL_DATA_TYPE

对于 varchar(max) 数据类型,返回 SQL_VARCHAR、SQL_VARBINARY 或 SQL_WVARCHAR。

CHAR_OCTET_LENGTH

返回字符或二进制列的最大长度。返回 0 表示大小不受限制。

SS_XML_SCHEMACOLLECTION_CATALOG_NAME

返回在其中定义 XML 架构集合名称的目录的名称。如果找不到目录名称,则此变量包含空字符串。

SS_XML_SCHEMACOLLECTION_SCHEMA_NAME

返回在其中定义 XML 架构集合名称的架构的名称。如果找不到架构名称,则此变量包含空字符串。

SS_XML_SCHEMACOLLECTION_NAME

返回 XML 架构集合的名称。如果找不到此名称,则此变量包含空字符串。

SS_UDT_CATALOG_NAME

包含 UDT(用户定义类型)的目录的名称。

SS_UDT_SCHEMA_NAME

包含 UDT 的架构的名称。

SS_UDT_ASSEMBLY_TYPE_NAME

UDT 的程序集限定名称。

对于 UDT,系统使用现有 TYPE_NAME 列指示 UDT 的名称;因此,不应针对该名称向 SQLColumnsSQLProcedureColumns 的结果集添加额外的列。UDT 列或参数的 DATA_TYPE 为 SQL_SS_UDT。

对于 UDT 参数,您可以使用上面定义的特定于驱动程序的新描述符来获取或设置 UDT 的额外元数据数据,条件是服务器返回或需要此信息。

当客户端连接到 SQL Server 并调用 SQLColumns 时,针对目录输入参数使用 NULL 或通配符值将不会返回其他目录的信息,而只返回有关当前目录的信息。客户端可以首先调用 SQLTables 确定所需的表位于哪个目录中。然后,客户端可以在调用 SQLColumns 时将该目录值用作目录输入参数,以便检索有关该表中的列的信息。

SQLColumns 和表值参数

SQLColumns 返回的结果集取决于 SQL_SOPT_SS_NAME_SCOPE 的设置。有关详细信息,请参阅 SQLSetStmtAttr。已针对表值参数添加以下列:

列名

数据类型

内容

SS_IS_COMPUTED

Smallint

对于 TABLE_TYPE 中的列,如果该列是一个计算列,则为 SQL_TRUE;否则为 SQL_FALSE。

SS_IS_IDENTITY

Smallint

如果该列为标识列,则为 SQL_TRUE;否则为 SQL_FALSE。

有关表值参数的详细信息,请参阅表值参数 (ODBC)

SQLColumns 对日期和时间增强功能的支持

有关为日期/时间类型返回的值的信息,请参阅目录元数据

有关详细信息,请参阅 日期/时间的改进 (ODBC)

SQLColumns 对大型 CLR UDT 的支持

SQLColumns 支持大型 CLR 用户定义类型 (UDT)。有关详细信息,请参阅大型 CLR 用户定义类型 (ODBC)

SQLColumns 对稀疏列的支持

已向 SQLColumns 的结果集添加了两个 SQL Server 特定列:

列名

数据类型

说明

SS_IS_SPARSE

Smallint

如果该列为稀疏列,则为 SQL_TRUE;否则为 SQL_FALSE。

SS_IS_COLUMN_SET

Smallint

如果该列为 column_set 列,则为 SQL_TRUE;否则为 SQL_FALSE。

为了符合 ODBC 规范,SS_IS_SPARSE 和 SS_IS_COLUMN_SET 的显示位置位于在 SQL Server 2008 之前的 SQL Server 版本中添加的所有驱动程序特定列之前,并位于 ODBC 自身委托的所有列之后。

SQLColumns 返回的结果集取决于 SQL_SOPT_SS_NAME_SCOPE 的设置。有关详细信息,请参阅 SQLSetStmtAttr

有关 ODBC 中的稀疏列的详细信息,请参阅稀疏列支持 (ODBC)

请参阅

概念

其他资源