SQLColumns

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

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。x 应用程序不使用 TableName 中的通配符,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 和 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 的名称;因此,不应将它的其他列添加到 SQLColumns 或 SQLProcedureColumns 的结果集中。 UDT 列或参数的 DATA_TYPE 为 SQL_SS_UDT。

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

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

SQLColumns 和表值参数

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

列名称 Data type 目录
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 对稀疏列的支持

已将两个 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(10.0.x)之前的 SQL Server 版本的所有特定于驱动程序的列之前,以及 ODBC 本身授权的所有列之后。

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

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

另请参阅

SQLColumns 函数
ODBC API 实现细节