共用方式為


OPEN (Transact-SQL)

開啟一個 Transact-SQL 伺服器資料指標,執行 DECLARE CURSOR 或 SET cursor_variable 陳述式指定的 Transact-SQL 陳述式來擴展資料指標。

主題連結圖示 Transact-SQL 語法慣例

語法

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }

引數

  • GLOBAL
    指定 cursor_name 參考全域資料指標。

  • cursor_name
    這是已宣告的資料指標名稱。 如果全域和本機資料指標同時存在,且名稱都是 cursor_name ,當指定 GLOBAL 時,cursor_name 是指全域資料指標;否則,cursor_name 是本機資料指標。

  • cursor_variable_name
    這是參考資料指標之資料指標變數的名稱。

備註

如果是用 INSENSITIVE 或 STATIC 選項來宣告資料指標,OPEN 會建立一份暫存資料表來存放結果集。 當結果集中任何資料列的大小超出 SQL Server 資料表的最大資料列大小時,OPEN 會失敗。 如果是用 KEYSET 選項來宣告資料指標,OPEN 會建立一份暫存資料表來存放索引鍵集。 暫存資料表儲存在 tempdb 中。

在開啟資料指標之後,請利用 @@CURSOR_ROWS 函數來擷取最後開啟的資料指標中,符合的資料列數。

[!附註]

SQL Server 不支援非同步產生索引鍵集衍生或靜態 Transact-SQL 資料指標。 OPEN 或 FETCH 之類的 Transact-SQL 資料指標作業是以批次方式來處理,因此,不需要非同步產生 Transact-SQL 資料指標。 SQL Server 會繼續支援非同步索引鍵集衍生或靜態應用程式開發介面 (API) 伺服器資料指標,其中低度延遲 OPEN 會是一個顧慮,因為每一個資料指標作業都需要用戶端往返。

範例

下列範例會開啟一個資料指標,且會提取所有資料列。

DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2012.HumanResources.vEmployee
WHERE LastName like 'B%';

OPEN Employee_Cursor;

FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
    FETCH NEXT FROM Employee_Cursor
END;

CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;

請參閱

參考

CLOSE (Transact-SQL)

@@CURSOR_ROWS (Transact-SQL)

DEALLOCATE (Transact-SQL)

DECLARE CURSOR (Transact-SQL)

FETCH (Transact-SQL)