指定資料指標
在 OLE DB、ODBC 和 ADO 規格中,可對 Transact-SQL 陳述式傳回的任何結果集,隱含地開啟資料指標。在執行 Transact-SQL 陳述式前,您應該先設定屬性 (Attribute 或 Property) 來定義資料指標的特性。然後,您可以呼叫 API 函數,一次提取一個資料列或資料列批次。API 資料指標屬性的預設值,與 Microsoft SQL Server 預設結果集的特性相同。當資料指標屬性設為預設值時,SQL Native Client ODBC 驅動程式和 SQL Native Client OLE DB 提供者都會實作預設的結果集。在這種情況下,不會用到資料指標。唯有當資料指標屬性的預設值變更時,驅動程式和提供者才會實作資料指標。
OLE DB、ODBC 和 ADO 在提及結果集和資料指標的組合時,各使用不同的術語:
- OLE DB 使用資料列集 (Rowset) 來表示結果集與其相關資料指標行為的組合。
- ODBC 則有點交替使用結果集和資料指標這兩個術語,因為它認為每一個結果集都會有自動對應的資料指標。更具體地說,ODBC 中的資料列集,就是提取時傳回的資料列數。
- ADO 中的資料錄集,就相當於 OLE DB 的資料列集。
Microsoft SQL Native Client OLE DB 提供者和 SQL Native Client ODBC 驅動程式的預設值,是使用 API 伺服器資料指標來實作所要求的任何資料指標函數。ODBC 用戶端應用程式可以載入「ODBC 資料指標程式庫」,以用戶端資料指標來代替伺服器資料指標。OLE DB 沒有自己的用戶端資料指標實作,但 ADO API 有。
下表根據目前的 API 資料指標設定和所執行的 Transact-SQL 陳述式,摘要列出將實作何種類型的資料指標或結果集。含有「不要結合資料指標類型」的資料格,表示同時要求了 Transact-SQL 伺服器資料指標和 API 資料指標;這樣會導致未定義的行為,不應該這麼做。
API 資料指標設定 | 所執行的 Transact-SQL 陳述式:DECLARE CURSOR | 所執行的 Transact-SQL 陳述式:SELECT,批次程序 |
---|---|---|
OLE DB/ODBC/ADO:預設的資料指標設定 |
Transact-SQL 資料指標 |
預設結果集 |
OLE DB/ODBC/ADO:非預設的資料指標設定;無用戶端資料指標程式庫 |
不要結合資料指標類型 |
API 伺服器資料指標 不支援批次和程序 |
OLE DB/ODBC/ADO:非預設的資料指標設定;已載入用戶端資料指標程式庫 |
不要結合資料指標類型 |
快取到用戶端資料指標的預設結果集 |