SQLSetDescField 和 SQLSetDescRec(游标库)
重要
Windows 的未来版本中将移除此功能。 避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 Microsoft 建议使用驱动程序的游标功能。
本主题讨论在游标库中使用 SQLSetDescField 和 SQLSetDescRec 函数。 有关这些函数的一般信息,请参阅 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 (当调用 SQLSetDescField 或 SQLSetDescRec 将 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 来设置任何其他字段,则会将调用传递到驱动程序。
游标库支持在调用 SQLExtendedFetch、 SQLFetch 或 SQLFetchScroll) 后动态 (更改应用程序行描述符的任何行的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。
在调用 SQLExtendedFetch 或 SQLFetchScroll 之后,在关闭游标之前,游标库不支持修改 ARD 的SQL_DESC_COUNT字段。