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

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

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

游标库支持在调用 SQLExtendedFetchSQLFetch 或 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。

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