一致性
引入的版本:ODBC 3.8
标准符合性:无
总结
SQLAsyncNotificationCallback 允许驱动程序在驱动程序返回SQL_STILL_EXECUTING后,当当前异步操作有进展时调用驱动程序管理器。
SQLAsyncNotificationCallback 只能由驱动程序调用。
驱动程序不会通过函数名称 SQLAsyncNotificationCallback 调用 SQLAsyncNotificationCallback。 相反,驱动程序管理器将函数指针作为相应连接句柄或语句句柄的SQL_ATTR_ASYNC_DBC_NOTIFICATION_CALLBACK或SQL_ATTR_ASYNC_STMT_NOTIFICATION_CALLBACK属性的值分别传递给驱动程序。 可以为不同的句柄分配不同的函数指针值。 函数指针的类型定义为SQL_ASYNC_NOTIFICATION_CALLBACK。
SQLAsyncNotificationCallback 是线程安全的。 驱动程序可以选择使用多个线程同时在不同句柄上调用 SQLAsyncNotificationCallback 。
Syntax
typedef SQLRETURN (SQL_API *SQL_ASYNC_NOTIFICATION_CALLBACK)(
SQLPOINTER pContex,
BOOL fLast);
Arguments
pContex
指向驱动程序管理器定义的数据结构的指针。 该值通过 SQLSetConnectAttr(SQL_ATTR_ASYNC_DBC_NOTIFICATION_CONTEXT) 或 SQLSetStmtAttr(SQL_ATTR_ASYNC_STMT_NOTIFICATION_CONTEXT)传递给驱动程序。 驱动程序无权访问该值。
fLast
由驱动程序用来指示此回调函数调用是当前异步作的最后一个调用。 驱动程序管理器再次调用函数时,驱动程序将返回除SQL_STILL_EXECUTING以外的返回代码。 例如,驱动程序管理器可以使用此信息提前通知应用程序异步作将完成。
如果 Handle 不是 HandleType 指定的类型的有效句柄, SQLCancelHandle 将返回SQL_INVALID_HANDLE。
退货
SQL_SUCCESS或SQL_ERROR。
Diagnostics
SQLAsyncNotificationCallback 可以针对以下两种情况返回SQL_ERROR(这些情况表示驱动程序或驱动程序管理器中的实现问题)。
| 错误 | Description |
|---|---|
| 连接或语句未请求通知。 | |
| 无效 句柄 | 驱动程序传入无效句柄,导致内部驱动程序管理器验证测试失败。 |