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 資料指標。Transact-SQL 資料指標作業 (例如 OPEN 或 FETCH) 一般為批次式;因此,不需要非同步產生 Transact-SQL 資料指標。SQL Server 會繼續支援非同步索引鍵集驅動或靜態應用程式開發介面 (API) 伺服器資料指標,其中低度延遲 OPEN 會是一個顧慮,因為每一個資料指標作業都需要用戶端往返。

範例

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

DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2008R2.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;