SQLColumns
无论 CatalogName、TableName 或 ColumnName 参数是否存在值,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 的名称;因此,不应针对该名称向 SQLColumns 或 SQLProcedureColumns 的结果集添加额外的列。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 对稀疏列的支持
已向 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)。