OPEN (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
開啟 Transact-SQL 伺服器資料指標,並執行 DECLARE CURSOR 或 SET cursor_variable 陳述式上指定的 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 資料指標作業是以批次方式來處理,因此,不需要非同步產生 Transact-SQL 資料指標。 由於用戶端會針對每個資料指標作業而往返運作,SQL Server 仍繼續支援非同步索引鍵集驅動的應用程式開發介面 (API) 伺服器資料指標或靜態的 API 伺服器資料指標,對這些伺服器資料指標而言,低度延遲的 OPEN 是一項需要關切的問題。
範例
下列範例會開啟一個資料指標,且會提取所有資料列。
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2022.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)