SQLAsyncNotificationCallback 函数

一致性
引入的版本: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。

语法

typedef SQLRETURN (SQL_API *SQL_ASYNC_NOTIFICATION_CALLBACK)(  
   SQLPOINTER pContex,   
   BOOL fLast);  

参数

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。

诊断

SQLAsyncNotificationCallback 可能针对以下两种情况返回 SQL_ERROR(这表示驱动程序或驱动程序管理器中的实现问题)。

错误 说明
连接或语句未请求通知。
无效句柄 驱动程序传入无效句柄,导致内部驱动程序管理器验证测试失败。

另请参阅

异步执行(轮询方法)