目录函数返回的数据

每个目录函数都以结果集的形式返回数据。 此结果集与其他任何结果集没有什么不同。 结果集通常由预定义的参数化 SELECT 语句生成,该语句在驱动程序中经过硬编码或存储在数据源的过程中。 有关如何从结果集中检索数据的信息,请参阅是否已创建结果集?

每个目录函数的结果集在该函数的引用条目中进行说明。 除了列出的列之外,结果集还可以在最后一个预定义列之后包含特定于驱动程序的列。 驱动程序文档中会说明这些列的相关信息(如有)。

应用程序应绑定相对于结果集末尾的特定于驱动程序的列。 也就是说,为了计算特定于驱动程序的列编号,应用程序应使用最后一列的编号(使用 SQLNumResultCols 检索)减去所需列之后出现的列数。 这样一来,在未来版本的 ODBC 或驱动程序中将新列添加到结果集时,就无需更改应用程序。 为了使此方案正常工作,驱动程序必须在特定于驱动程序的旧列之前添加特定于驱动程序的新列,以便列数不会相对于结果集的末尾有所更改。

即使结果集包含特殊字符,结果集中返回的标识符也不带引号。 例如,假设标识符引号字符(该字符特定于驱动程序,通过 SQLGetInfo 返回)是双引号 ("),并且“应付帐款”表包含名为“客户名称”的列。 在 SQLColumns 为此列返回的行中,TABLE_NAME 列的值为“应付帐款”(不带引号),而不是“应付帐款”(带引号),COLUMN_NAME 列的值为“客户名称”(不带引号),而不是“客户名称”(带引号)。 若要检索“应付帐款”表中的客户名称,应用程序将使用以下名称,并加上引号:

SELECT "Customer Name" FROM "Accounts Payable"  

有关详细信息,请参阅带引号的标识符

目录函数以类似 SQL 的授权模型为基础,该模型基于用户名和密码建立连接,并且只返回用户具有权限的数据。 个别文件的密码保护不适用于此模型,由驱动程序定义。

目录函数返回的结果集几乎永远不会更新,应用程序理论上无法通过更改这些结果集中的数据来更改数据库的结构。