DECLARE CURSOR 定義 Transact-SQL 伺服器資料指標的屬性,例如資料指標運作時的捲動行為以及用來建立結果集的查詢。OPEN 陳述式可擴展結果集,而 FETCH 會從結果集中傳回一個資料列。CLOSE 陳述式會釋放與資料指標相關聯的目前結果集。DEALLOCATE 陳述式則會釋放資料指標所使用的資源。
DECLARE CURSOR 陳述式的第一種格式是使用 ISO 語法來宣告資料指標的行為。DECLARE CURSOR 的第二種格式是使用 Transact-SQL 延伸模組,讓您使用與 ODBC 或 ADO 資料庫 API 資料指標功能中相同的資料指標類型來定義資料指標。
您不能混用這兩種格式。若在 CURSOR 關鍵字之前指定 SCROLL 或 INSENSITIVE 關鍵字,則在 CURSOR 與 FOR select_statement 關鍵字之間不能使用任何關鍵字。若在 CURSOR 與 FOR select_statement 關鍵字之間指定了關鍵字,就無法在 CURSOR 關鍵字之前指定 SCROLL 或 INSENSITIVE。
如果使用 Transact-SQL 語法的 DECLARE CURSOR 中未指定 READ_ONLY、OPTIMISTIC 或 SCROLL_LOCKS,則預設如下:
-
若 SELECT 陳述式不支援更新 (權限不足、存取的遠端資料表不支援更新等等),則資料指標為 READ_ONLY。
-
STATIC 和 FAST_FORWARD 資料指標的預設值是 READ_ONLY。
-
DYNAMIC 和 KEYSET 資料指標的預設值是 OPTIMISTIC。
只有其他的 Transact-SQL 陳述式可以參考資料指標名稱。資料庫 API 函數無法參考這些名稱。例如,在宣告資料指標後,OLE DB、ODBC 或 ADO 函數或方法都無法參考資料指標名稱。資料指標資料列不能使用 API 的提取函數或方法提取;只有 Transact-SQL FETCH 陳述式可以提取這些資料列。
在宣告資料指標後,下列系統預存程序即可用來判斷資料指標的特性。
|
系統預存程序
|
描述
|
|---|
|
sp_cursor_list
|
傳回目前連接可見的資料指標清單及其屬性。
|
|
sp_describe_cursor
|
描述某個資料指標的屬性,例如,它是一個順向資料指標或捲動資料指標。
|
|
sp_describe_cursor_columns
|
描述資料指標結果集中的資料行屬性。
|
|
sp_describe_cursor_tables
|
描述資料指標所存取的基底資料表。
|
您可以在宣告資料指標的 select_statement 中使用變數。在資料指標宣告之後,資料指標變數值便不會改變。在 SQL Server 6.5 版和更早的版本中,每次重新開啟資料指標時,都會重新整理變數值。