SQLColumns

SQLColumns 返回SQL_SUCCESS CatalogNameTableNameColumnName 参数是否存在值。 当这些参数中使用了无效值时,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

对于 ODBC 2。TableNameSQLColumns 中使用通配符的 x 应用程序返回有关名称与 TableName 匹配且由当前用户拥有的任何表的信息。 如果当前用户没有名称与 TableName 参数匹配的表, SQLColumns 则 返回有关表名称与 TableName 参数匹配的其他用户拥有的任何表的信息。 对于 ODBC 2。使用通配符的 SQLColumnsx 应用程序返回名称与 TableName 匹配的所有表。 对于 ODBC 3。x 应用程序 SQLColumns 返回名称与 TableName 匹配的所有表,无论所有者或是否使用通配符。

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

列名称 说明
DATA_TYPE 返回 varchar (最大) 数据类型SQL_VARCHAR 、SQL_VARBINARY或SQL_WVARCHAR
TYPE_NAME 对于 varchar (max) 、varbinary (max) 和 nvarchar (max) 数据类型,返回“varchar”、“varbinary”或“nvarchar”。
COLUMN_SIZE 返回 varchar (最大 ) 数据类型的SQL_SS_LENGTH_UNLIMITED,指示列的大小不受限制。
BUFFER_LENGTH 返回 varchar (最大) 数据类型的SQL_SS_LENGTH_UNLIMITED,指示缓冲区大小不受限制。
SQL_DATA_TYPE 返回 varchar (最大) 数据类型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 的名称;因此,不应将它的其他列添加到 或 SQLProcedureColumns 的结果集中SQLColumns。 UDT 列或参数的 DATA_TYPE 为 SQL_SS_UDT。

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

当客户端连接到 SQL Server并调用 SQLColumns 时,对目录输入参数使用 NULL 或 wild 卡 值将不会从其他目录返回信息。 而只返回有关当前目录的信息。 客户端可以首先调用 SQLTable,以确定所需表所在的目录。 然后,客户端可以在调用 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 User-Defined类型 (ODBC)

SQLColumns 对稀疏列的支持

已将两个SQL Server特定列添加到 SQLColumns 的结果集中:

列名称 数据类型 说明
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)

另请参阅

SQLColumns 函数
ODBC API 实现细节