符合性
推出版本:ODBC 3.0 標準合規:ISO 92
總結
SQLCloseCursor 會關閉已開啟的游標並丟棄待處理結果。
Syntax
SQLRETURN SQLCloseCursor(
SQLHSTMT StatementHandle);
論點
StatementHandle
[輸入]語句句柄。
Returns
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR或SQL_INVALID_HANDLE。
Diagnostics
當 SQLCloseCursor 回傳 SQL_ERROR 或 SQL_SUCCESS_WITH_INFO 時,可透過呼叫 SQLGetDiagRec 取得對應的 SQLSTATE 值,並將 HandleType 設為 SQL_HANDLE_STMT,Handle 為 StatementHandle 。 下表列出 SQLCloseCursor 常見回傳的 SQLSTATE 值,並在此函式的情境中解釋每個值;「(DM)」符號會置於驅動程式管理器回傳的 SQLSTATE 描述前。 除非另有說明,否則與每個 SQLSTATE 值相關聯的傳回碼會SQL_ERROR。
| SQLSTATE | 錯誤 | 說明 |
|---|---|---|
| 01000 | 一般警告 | 驅動程式特定的資訊訊息。 (函式會傳回SQL_SUCCESS_WITH_INFO。) |
| 24000 | 無效的數據指標狀態 | StatementHandle 上沒有開啟游標。 (此資料僅由 ODBC 3 回傳。x 驅動程式。) |
| HY000 | 一般誤差 | 發生錯誤,其中沒有特定的 SQLSTATE,也沒有定義任何實作特定的 SQLSTATE。 *MessageText 緩衝區中 SQLGetDiagRec 傳回的錯誤訊息描述錯誤及其原因。 |
| HY001 | 記憶體配置錯誤 | 驅動程式無法配置支援執行或完成函式所需的記憶體。 |
| HY010 | 函式順序錯誤 | (DM) 一個非同步執行的函式被呼叫,用於與 StatementHandle 相關的連接句柄,且在呼叫該函式時仍在執行中。 (DM) 呼叫 StatementHandle 的異步執行函式,並在呼叫此函式時仍在執行。 (DM) 已針對 StatementHandle 呼叫 SQLExecute、SQLExecDirect、SQLBulkOperations 或 SQLSetPos,並傳回SQL_NEED_DATA。 在針對所有數據執行中參數或數據行傳送數據之前,會呼叫此函式。 |
| HY013 | 記憶體管理錯誤 | 無法處理函式呼叫,因為基礎記憶體物件無法存取,可能是因為記憶體不足的情況。 |
| HY117 | 聯機因為未知的交易狀態而暫停。 只允許中斷連線和唯讀函式。 | (DM) 如需暫停狀態的詳細資訊,請參閱 SQLEndTran 函式。 |
| HYT01 | 連線已逾時 | 在數據源回應要求之前,連線逾時期限已過期。 線上逾時期間是透過 SQLSetConnectAttr 來設定,SQL_ATTR_CONNECTION_TIMEOUT。 |
| IM001 | 驅動程式不支援此函式 | (DM) 與 StatementHandle 相關聯的驅動程式不支援 函式。 |
評論
若未開啟游標,SQLCloseCursor 會回傳 SQLSTATE 24000(游標狀態無效)。 呼叫 SQLCloseCursor 等同於使用 SQL_CLOSE 選項呼叫 SQLFreeStmt ,但若 SQLFreeStmt 在語句中未開啟游標,則SQL_CLOSE 不影響應用程式,而 SQLCloseCursor 則回傳 SQLSTATE 24000(游標狀態無效)。
Note
如果是ODBC 3。x 應用程式與 ODBC 2 搭配使用。x 驅動程式在未開啟游標時呼叫 SQLCloseCursor,SQLSTATE 24000(游標狀態無效)不會回傳,因為驅動程式管理器會將 SQLCloseCursor 映射到 SQLFreeStmt SQL_CLOSE。
更多資訊請參見 關閉游標。
程式碼範例
請參見 SQLBrowseConnect 函式 與 SQLConnect 函式。
相關函數
| 如需相關信息 | 看! |
|---|---|
| 取消語句處理 | SQLCancel 函式 |
| 釋放把手 | SQLFreeHandle 函式 |
| 處理多重結果集 | SQLMoreResults 函式 |