SQLSetDescField 和 SQLSetDescRec(游标库)

重要

Windows 的未来版本中将移除此功能。 避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 Microsoft 建议使用驱动程序的游标功能。

本主题讨论在游标库中使用 SQLSetDescFieldSQLSetDescRec 函数。 有关这些函数的一般信息,请参阅 SQLSetDescField 函数SQLSetDescRec 函数

游标库在调用 SQLSetDescField 时执行它以返回为书签列设置的字段的值:

SQL_DESC_DATA_PTR

SQL_DESC_INDICATOR_PTR

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_DATETIME_INTERVAL_CODE

SQL_DESC_SCALE

SQL_DESC_PRECISION

SQL_DESC_TYPE

SQL_DESC_NAME

SQL_DESC_UNNAMED

SQL_DESC_NULLABLE

游标库执行对书签列 的 SQLSetDescRec 的调用。

使用 ODBC 2.x 驱动程序时,游标库返回 SQLSTATE HY090 (当调用 SQLSetDescFieldSQLSetDescRec 将 ARD 书签记录的SQL_DESC_OCTET_LENGTH字段设置为不等于 4 的值时,字符串或缓冲区) 长度无效。 使用 ODBC 3.x 驱动程序时,游标库允许缓冲区为任意大小。

游标库在调用 SQLSetDescField 时执行它以返回SQL_DESC_BIND_OFFSET_PTR、SQL_DESC_BIND_TYPE、SQL_DESC_ROW_ARRAY_SIZE或SQL_DESC_ROW_STATUS_PTR字段的值。 这些字段可以针对任何行返回,而不仅仅是书签行。

游标库不会执行 SQLSetDescField 来更改除前面提到的字段以外的任何描述符字段。 如果应用程序在加载游标库时调用 SQLSetDescField 来设置任何其他字段,则会将调用传递到驱动程序。

游标库支持在调用 SQLExtendedFetchSQLFetchSQLFetchScroll) 后动态 (更改应用程序行描述符的任何行的SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR和SQL_DESC_OCTET_LENGTH_PTR字段。 只能将SQL_DESC_OCTET_LENGTH_PTR字段更改为 null 指针,以取消绑定列的长度缓冲区。

游标库不支持在游标打开时更改 APD 或 ARD 中的SQL_DESC_BIND_TYPE字段。 只能在关闭游标后以及打开新游标之前更改SQL_DESC_BIND_TYPE字段。 游标库在游标打开时支持更改的唯一描述符字段是SQL_DESC_ARRAY_STATUS_PTR、SQL_DESC_BIND_OFFSET_PTR、SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、SQL_DESC_OCTET_LENGTH_PTR和SQL_DESC_ROWS_PROCESSED_PTR。

在调用 SQLExtendedFetchSQLFetchScroll 之后,在关闭游标之前,游标库不支持修改 ARD 的SQL_DESC_COUNT字段。