共用方式為


CURSOR_STATUS (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體

針對指定的參數,CURSOR_STATUS 會顯示資料指標宣告是否已傳回資料指標和結果集。

Transact-SQL 語法慣例

語法

CURSOR_STATUS
     (
          { 'local' , 'cursor_name' }
          | { 'global' , 'cursor_name' }
          | { 'variable' , 'cursor_variable' }
     )

引數

'本地'

指定常數,指出數據指標來源是 本機數據指標

'global'

指定常數,指出數據指標的來源是 全域數據指標

'variable'

指定一個常數來指示資料指標的來源是區域變數。

  • 'cursor_variable'

    資料指標變數的名稱。 您必須使用 cursor 資料類型來定義資料指標變數。

傳回類型

小整數

傳回值 資料指標名稱 資料指標變數
1 資料指標結果集至少有一個資料列。

非機密資料指標和索引鍵集資料指標,其結果集至少有一個資料列。

動態資料指標的結果集可以有零、一或多個資料列。
配置給這個變數的資料指標是開啟的。

非機密資料指標和索引鍵集資料指標,其結果集至少有一個資料列。

動態資料指標的結果集可以有零、一或多個資料列。
0 數據指標結果集是空的。 1 配置給這個變數的資料指標是開啟的,但結果集確定空白。*
-1 資料指標已關閉。 配置給這個變數的資料指標已關閉。
-2 不適用。 可能有下列其中一種情況:

先前呼叫的程式未將游標指派給這個 OUTPUT 變數。

先前指派的程式已將數據指標指派給這個 OUTPUT 變數,但程式完成時,數據指標處於關閉狀態。 因此,這個資料指標已取消配置,並未傳回給發出呼叫的程序。

未指派任何資料指標給已宣告的資料指標變數。
-3 具有指定名稱的數據指標不存在。 具有指定名稱的數據指標變數不存在,或如果有數據指標存在,則尚未配置任何數據指標。

1 動態數據指標永遠不會傳回此結果。

範例

此範例會使用 CURSOR_STATUS 函式來顯示資料指標在宣告後、開啟後及關閉後的狀態。

CREATE TABLE #TMP (ii INT);
GO

INSERT INTO #TMP (ii) VALUES (1);
INSERT INTO #TMP (ii) VALUES (2);
INSERT INTO #TMP (ii) VALUES (3);
GO

-- Create a cursor
DECLARE cur CURSOR
FOR SELECT * FROM #TMP;

-- Display the status of the cursor before and after opening
-- and closing the cursor

SELECT CURSOR_STATUS('global', 'cur') AS 'After declare';

OPEN cur;
SELECT CURSOR_STATUS('global', 'cur') AS 'After Open';

CLOSE cur;
SELECT CURSOR_STATUS('global', 'cur') AS 'After Close';

-- Remove the cursor.
DEALLOCATE cur;

-- Drop the table.
DROP TABLE #TMP;

結果集如下所示。

After declare
---------------
-1

After Open
----------
1

After Close
-----------
-1