SQLAsyncNotificationCallback 函式
一致性
引進的版本:ODBC 3.8
標準合規性:無
摘要
驅動程式傳回 SQL_STILL_EXECUTING 後,若目前的非同步作業有進展,SQLAsyncNotificationCallback 會允許驅動程式回呼至驅動程式管理員。 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。 舉例來說,驅動程式管理員可能會使用這項資訊事先通知應用程式非同步作業即將完成。
如果控制代碼並非 HandleType 指定型別的有效控制代碼,SQLCancelHandle 會傳回 SQL_INVALID_HANDLE。
傳回
SQL_SUCCESS 或 SQL_ERROR。
診斷
SQLAsyncNotificationCallback 可能會針對下列兩種情況傳回 SQL_ERROR (這些情況表示驅動程式或驅動程式管理員中發生實作問題)。
錯誤 | Description |
---|---|
連線或陳述式未要求通知。 | |
控制代碼不正確 | 驅動程式傳入不正確的控制代碼,導致內部驅動程式管理員驗證測試失敗。 |