執行定點更新和刪除陳述式
重要
Windows 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 Microsoft 建議使用驅動程式的資料指標功能。
應用程式使用 SQLFetchScroll 擷取數據區塊之後,就可以更新或刪除區塊中的數據。 若要執行定位更新或刪除,應用程式:
呼叫 SQLSetPos ,將游標放在要更新或刪除的數據列上。
使用下列語法建構定位的更新或刪除語句:
UPDATE table-name
SET column-identifier = {expression | NULL}
[, 數據行標識符 = {expression | NULL}]
WHERE CURRENT OF cursor-name
DELETE FROM table-name WHERE CURRENT OF cursor-name
在定位的 update 語句中建構 SET 子句最簡單的方式,是針對要更新的每個數據行使用參數標記,並使用 SQLBindParameter 將這些參數係結至要更新的數據列集緩衝區。 在此情況下,參數的 C 數據類型會與數據列集緩衝區的 C 數據類型相同。
如果數據列將執行定位的 update 語句,則會更新目前數據列的數據列集緩衝區。 成功執行定位的 update 語句之後,數據指標連結庫會將目前數據列中每個數據行的值複製到其快取。
警告
如果應用程式在執行定位更新語句之前未正確更新數據列集緩衝區,則執行 語句之後,快取中的數據將會不正確。
使用與數據指標相關聯之語句不同的語句來執行定位更新或刪除語句。
警告
數據指標連結庫建構的 WHERE 子句無法識別任何數據列、識別不同的數據列,或識別多個數據列。 如需詳細資訊,請參閱 建構搜尋語句。
所有定位的更新和刪除語句都需要數據指標名稱。 若要指定數據指標名稱,應用程式會在開啟數據指標之前呼叫 SQLSetCursorName 。 若要使用驅動程式所產生的數據指標名稱,應用程式會在開啟數據指標之後呼叫 SQLGetCursorName 。
在數據指標連結庫執行定位的更新或刪除語句之後,數據指標連結庫所維護的狀態陣列集緩衝區和快取包含下表所示的值。
使用的語句 | 數據列狀態陣列中的值 | 中的值 資料列集緩衝區 |
中的值 快取緩衝區 |
---|---|---|---|
定位更新 | SQL_ROW_UPDATED | 新值[1] | 新值[1] |
定位刪除 | SQL_ROW_DELETED | 舊的值 | 舊的值 |
[1] 應用程式在執行定位的 update 語句之前,必須先更新數據列集緩衝區中的值;執行定位的 update 語句之後,數據指標連結庫會將數據列集緩衝區中的值複製到其快取。