共用方式為


處理定點更新和刪除語句

重要

Windows 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 Microsoft 建議使用驅動程式的資料指標功能。

資料指標程式庫支援定點更新和刪除語句,方法是將這類語句 中的 WHERE CURRENT OF 子句取代 為 WHERE 子句,以列舉每個系結資料行快取中儲存的值。 資料指標程式庫會將新建構的 UPDATE DELETE 語句傳遞至驅動程式以供執行。 針對定位的 update 語句,資料指標程式庫接著會從資料列集緩衝區的值更新其快取,並將資料列狀態陣列中的對應值設定為SQL_ROW_UPDATED。 針對定位的 delete 語句,它會將資料列狀態陣列中的對應值設定為SQL_ROW_DELETED。

警告

資料指標程式庫建構的 WHERE 子句無法識別任何資料列、識別不同的資料列,或識別多個資料列。 如需詳細資訊,請參閱 本附錄稍後的建構搜尋語句

定位的更新和刪除語句受限於下列限制:

  • 定點更新和刪除語句只能在下列情況下使用:當 SELECT 語句產生結果集時;當 SELECT 語句不包含聯結、 UNION 子句或 GROUP BY 子句時 ;以及當選取清單中使用別名或 運算式的任何資料行未系結至 SQLBindCol 時。

  • 如果應用程式準備定位的更新或刪除語句,則必須在呼叫 SQLFetch SQLFetchScroll 之後執行此動作。 雖然資料指標程式庫會將語句提交至驅動程式以供準備,但它會關閉 語句,並在應用程式呼叫 SQLExecute 時直接執行它。

  • 如果驅動程式只支援一個使用中語句,資料指標程式庫會擷取結果集的其餘部分,然後在執行定位的更新或刪除語句之前,從快取重新擷取目前的資料列集。 如果應用程式接著呼叫傳回結果集中中繼資料的函式(例如 SQLNumResultCols SQLDescribeCol ),資料指標程式庫會傳回錯誤。

  • 如果在資料表的資料行上執行定點更新或刪除語句,其中包含每次執行更新時自動更新的時間戳記資料行,則時間戳記資料行系結時,所有後續定位的更新或刪除語句都會失敗。 這是因為資料指標程式庫所建立的搜尋更新或刪除語句無法正確識別要更新的資料列。 時間戳記資料行搜尋語句中的值不符合時間戳記資料行的自動更新值。