CURSOR_STATUS (Transact-SQL)
可讓預存程序的呼叫者判斷程序是否已傳回給定參數之資料指標和結果集的純量函數。
語法
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
引數
'local'
指定一個常數來指示資料指標的來源是本機資料指標名稱。
'cursor_name'
這是資料指標的名稱。資料指標名稱必須符合識別碼的規則。
'global'
指定一個常數來指示資料指標的來源是全域資料指標名稱。
'variable'
指定一個常數來指示資料指標的來源是本機變數。
'cursor_variable'
這是資料指標變數的名稱。您必須利用 cursor 資料類型來定義資料指標變數。
傳回類型
smallint
傳回值 | 資料指標名稱 | 資料指標變數 |
---|---|---|
1 |
資料指標的結果集至少有一個資料列。 非機密資料指標和索引鍵集資料指標,其結果集至少有一個資料列。 動態資料指標的結果集可以有零、一或多個資料列。 |
配置給這個變數的資料指標是開啟的。 非機密資料指標和索引鍵集資料指標,其結果集至少有一個資料列。 動態資料指標的結果集可以有零、一或多個資料列。 |
0 |
資料指標的結果集是空的。* |
配置給這個變數的資料指標是開啟的,但結果集確定空白。* |
-1 |
資料指標已關閉。 |
配置給這個變數的資料指標已關閉。 |
-2 |
不適用。 |
有下列幾種: 先前呼叫的程序未指派任何資料指標給這個 OUTPUT 變數。 先前呼叫的程序指派一個資料指標給這個 OUTPUT 變數,但程序完成時,這個資料指標在關閉狀態中。因此,這個資料指標已取消配置,並未傳回給發出呼叫的程序。 沒有指派給宣告的資料指標變數之資料指標。 |
-3 |
含指定名稱的資料指標不存在。 |
含指定名稱的資料指標變數不存在,或這個變數存在,但還沒有配置資料指標。 |
*動態資料指標永遠不會傳回這個結果。
範例
這個範例會建立一個名稱為 lake_list 的程序,且會利用執行 lake_list 的輸出來作為一項 CURSOR_STATUS 檢查。
附註: |
---|
這個範例相依於名稱為 check_authority (尚未建立的) 程序。 |
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'lake_list' AND type = 'P')
DROP PROCEDURE lake_list
GO
CREATE PROCEDURE lake_list
( @region varchar(30),
@size integer,
@lake_list_cursor CURSOR VARYING OUTPUT )
AS
BEGIN
DECLARE @ok SMALLINT
EXECUTE check_authority @region, username, @ok OUTPUT
IF @ok = 1
BEGIN
SET @lake_list_cursor = CURSOR LOCAL SCROLL FOR
SELECT name, lat, long, size, boat_launch, cost
FROM lake_inventory
WHERE locale = @region AND area >= @size
ORDER BY name
OPEN @lake_list_cursor
END
END
DECLARE @my_lakes_cursor CURSOR
DECLARE @my_region char(30)
SET @my_region = 'Northern Ontario'
EXECUTE lake_list @my_region, 500, @my_lakes_cursor OUTPUT
IF Cursor_Status('variable', '@my_lakes_cursor') <= 0
BEGIN
/* Some code to tell the user that there is no list of
Lakes. */
END
ELSE
BEGIN
FETCH @my_lakes_cursor INTO -- Destination here
-- Continue with other code here.
END
請參閱
參考
資料指標函數 (Transact-SQL)
資料類型 (Transact-SQL)