Aracılığıyla paylaş


CURSOR_STATUS (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Belirli bir parametre için, CURSOR_STATUS imleç bildiriminin bir imleç ve sonuç kümesi döndürip döndürmediğini gösterir.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Tartışmalar

'yerel'

İmleç kaynağının yerel bir imleç olduğunu belirten bir sabit belirtir.

'global'

İmlecin kaynağının genel bir imleç olduğunu belirten bir sabit belirtir.

'değişken'

İmlecin kaynağının yerel bir değişken olduğunu belirten bir sabit belirtir.

  • 'cursor_variable'

    İmleç değişkeninin adı. İmleç değişkeni, imleç veri türü kullanılarak tanımlanmalıdır.

Dönüş türleri

smallint

Dönüş değeri İmleç adı İmleç değişkeni
1 İmleç sonuç kümesinin en az bir satırı vardır.

Duyarsız ve tuş kümesi imleçleri için sonuç kümesinin en az bir satırı vardır.

Dinamik imleçler için sonuç kümesinde sıfır, bir veya daha fazla satır olabilir.
Bu değişkene ayrılan imleç açık.

Duyarsız ve tuş kümesi imleçleri için sonuç kümesinin en az bir satırı vardır.

Dinamik imleçler için sonuç kümesinde sıfır, bir veya daha fazla satır olabilir.
0 İmleç sonuç kümesi boş. 1 Bu değişkene ayrılan imleç açık, ancak sonuç kümesi kesinlikle boş.*
-1 İmleç kapatılır. Bu değişkene ayrılan imleç kapatılır.
-2 Uygulanamaz. Şu olasılıklardan birine sahiptir:

Daha önce adı verilen yordam bu OUTPUT değişkene bir imleç atamadı.

Daha önce atanan yordam bu OUTPUT değişkene bir imleç atamıştı, ancak yordam tamamlandığında imleç kapalı durumdaydı. Bu nedenle, imleç serbest bırakılır ve çağıran yordama döndürülür.

Bildirilen imleç değişkenine imleç atanmadı.
-3 Belirtilen ada sahip bir imleç yok. Belirtilen ada sahip bir imleç değişkeni yok veya varsa, buna henüz imleç ayrılmamış.

1 Dinamik imleçler hiçbir zaman bu sonucu döndürmez.

Örnekler

Bu örnekte, bir imlecin CURSOR_STATUS bildiriminden sonra, açıldıktan sonra ve kapatıldıktan sonra durumunu göstermek için işlevi kullanılır.

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;

Sonuç kümesi aşağıdadır.

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

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

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