Catalog函数¶
用户数据以一定的结构存放在数据库中,这样的一个结构往往由表、索引、数据字典等共同组成。 应用程序可以调用Catalog函数来获取用户数据的存放信息,从而确定如何访问这些数据。 此外,Catalog函数还用于获取存储过程的相关信息,包括存储过程的参数和返回值信息等。
所有的Catalog函数都必须在语句句柄上调用,如果函数执行成功则该语句句柄下将有一个结果集;该点与执行一条SELECT语句相仿,结果集处理以及游标使用同样适用于该语句句柄。
实际上,ODBC驱动实现Catalog函数的内部方式几乎就是执行查询的过程:调用Catalog函数时,应用程序提供了有效的语句句柄和其他字符串参数; 在Catalog函数内部,首先用这些字符形参数组成合适的SQL查询语句,然后在语句句柄上执行该查询。但Catalog函数隐藏了与数据库相关的查询细节,从而可以实现跨数据库的编程。
根据Catalog函数获得的信息,它可以分为下列几类:
数据类型信息函数
在<数据类型>章中描述了SQL数据类型的特性,以及它们和数据源数据类型之间的对应关系。实际上,Catalog函数SQLGetTypeInfo同样提供了所有的信息,
表信息函数
该类函数描述了在关系数据库中以表的结果存在的实体信息,它又包括:
SQLTables和SQLTablePrivileges,前者用于列出符合条件(由函数参数确定)的表或视图的相关信息,后者用于获取符合条件的表上的用户权限信息。
SQLColumns和SQLColumnPrivileges,前者用于列出符合条件(由函数参数确定)的列的相关信息,包括列的数据类型、是否为空,以及该列在表中的位置等,后者用于获取符合条件的列上的用户权限信息。
SQLSpecialColumns,当以参数SQL_BEST_ROWID调用时,该函数返回能唯一标志指定表上一行的列的组合;当以参数SQL_ROWVER调用时,返回指定表上的行版本列。
约束信息函数
该类函数包括SQLPrimaryKeys和SQLForeignKeys,它们分别列出符合条件的表上的主键和外键,并返回组成这些主键或外键的列的详细信息。
统计信息函数
ODBC中的统计信息函数只有SQLStatistics,该函数描述了为存放指定表使用的空间(以page为单位),该表的行数等统计信息;同时,它也描述了该表上存在的索引,索引类型、这些索引占用的空间和关键字的数目等。通过这些信息,用户可以大致了解该表数据的分布情况。
存储过程信息函数
存储过程信息函数包括SQLProcedures和SQLProcedureColumns,前者提供了符合条件的所有存储过程的列表,后者则说明了指定存储过程的参数类型和返回值类型。 通过这两个函数,用户可以获得存储过程调用的必要信息。
注意
执行任何一个catalog函数后,会返回一个结果集,每个catalog函数返回的结果集的列名、列类型是固定的。 详细可参考微软官方文档对每个catalog函数返回列的描述。 结果集也必须用<处理查询结果>章节的内容对各个列进行数据绑定来获取相关数据。
受影响函数¶
应用程序更新、删除或插入行后,可以调用 SQLRowCount 来确定受影响的行数。 SQLRowCount 通过执行 UPDATE、 DELETE 、MERGE或 INSERT 语句、执行定位的更新或删除语句或调用 SQLSetPos 来更新、删除或插入行,都将返回此值。