CURSOR_STATUS (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Untuk parameter tertentu, CURSOR_STATUS
menunjukkan apakah deklarasi kursor telah mengembalikan kursor dan tataan hasil atau tidak.
Sintaks
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
Argumen
'lokal'
Menentukan konstanta yang menunjukkan bahwa sumber kursor adalah nama kursor lokal.
'cursor_name'
Nama kursor. Nama kursor harus sesuai dengan aturan pengidentifikasi database.
'global'
Menentukan konstanta yang menunjukkan bahwa sumber kursor adalah nama kursor global.
'variabel'
Menentukan konstanta yang menunjukkan bahwa sumber kursor adalah variabel lokal.
'cursor_variable'
Nama variabel kursor. Variabel kursor harus ditentukan menggunakan jenis data kursor .
Jenis yang dikembalikan
smallint
Nilai hasil | Nama kursor | Variabel kursor |
---|---|---|
1 | Kumpulan hasil kursor memiliki setidaknya satu baris. Untuk kursor yang tidak sensitif dan set kunci, kumpulan hasil memiliki setidaknya satu baris. Untuk kursor dinamis, kumpulan hasil dapat memiliki nol, satu, atau beberapa baris. |
Kursor yang dialokasikan untuk variabel ini terbuka. Untuk kursor yang tidak sensitif dan set kunci, kumpulan hasil memiliki setidaknya satu baris. Untuk kursor dinamis, kumpulan hasil dapat memiliki nol, satu, atau beberapa baris. |
0 | Kumpulan hasil kursor kosong.* | Kursor yang dialokasikan untuk variabel ini terbuka, tetapi tataan hasilnya pasti kosong.* |
-1 | Kursor ditutup. | Kursor yang dialokasikan untuk variabel ini ditutup. |
-2 | Tidak berlaku. | Memiliki salah satu kemungkinan berikut: Prosedur yang sebelumnya disebut tidak menetapkan kursor ke variabel OUTPUT ini. Prosedur yang ditetapkan sebelumnya menetapkan kursor ke variabel OUTPUT ini, tetapi kursor dalam keadaan tertutup ketika prosedur selesai. Oleh karena itu, kursor dibatalkan alokasinya, dan tidak dikembalikan ke prosedur panggilan. Tidak ada kursor yang ditetapkan ke variabel kursor yang dideklarasikan. |
-3 | Kursor dengan nama yang ditentukan tidak ada. | Variabel kursor dengan nama yang ditentukan tidak ada, atau jika ada, tidak ada kursor yang belum dialokasikan untuk itu. |
*Kursor dinamis tidak pernah mengembalikan hasil ini.
Contoh
Contoh ini menggunakan CURSOR_STATUS
fungsi untuk memperlihatkan status kursor, setelah deklarasi, setelah dibuka, dan setelah ditutup.
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
--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
Berikut set hasilnya.
After declare
---------------
-1
After Open
----------
1
After Close
-----------
-1