Bagikan melalui


sp_cursor_list (T-SQL)

Berlaku untuk: SQL Server

Melaporkan atribut kursor server yang saat ini terbuka untuk koneksi.

Konvensi sintaks transact-SQL

Sintaks

sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

Argumen

[ @cursor_return = ] cursor_return OUTPUT

Nama variabel kursor yang dideklarasikan. @cursor_return adalah parameter OUTPUT dari jenis KURSOR. Kursor adalah kursor baca-saja yang dapat digulir, dinamis.

[ @cursor_scope = ] cursor_scope

Menentukan tingkat kursor yang akan dilaporkan. @cursor_scope int, tanpa default, dan dapat menjadi salah satu nilai ini.

Nilai Deskripsi
1 Laporkan semua kursor lokal.
2 Laporkan semua kursor global.
3 Laporkan kursor lokal dan global.

Mengembalikan nilai kode

Tidak ada.

Kursor dikembalikan

sp_cursor_list mengembalikan laporannya sebagai parameter output kursor Transact-SQL, bukan sebagai kumpulan hasil. Ini memungkinkan batch Transact-SQL, prosedur tersimpan, dan pemicu untuk bekerja dengan output satu baris pada satu waktu. Ini juga berarti prosedur tidak dapat dipanggil langsung dari fungsi API database. Parameter output kursor harus terikat ke variabel program, tetapi API database tidak mendukung parameter atau variabel kursor pengikatan.

Ini adalah format kursor yang dikembalikan oleh sp_cursor_list. Format kursor sama dengan format yang dikembalikan oleh sp_describe_cursor.

Nama kolom Jenis data Deskripsi
reference_name nama sysname Nama yang digunakan untuk merujuk ke kursor. Jika referensi ke kursor melalui nama yang DECLARE CURSOR diberikan pada pernyataan, nama referensi sama dengan nama kursor. Jika referensi ke kursor melalui variabel, nama referensi adalah nama variabel kursor.
cursor_name nama sysname Nama kursor dari pernyataan DECLARE CURSOR . Di SQL Server, jika kursor dibuat dengan mengatur variabel kursor ke kursor, cursor_name mengembalikan nama variabel kursor. Dalam rilis sebelumnya, kolom output ini mengembalikan nama yang dihasilkan sistem.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Nilai yang sama seperti yang CURSOR_STATUS dilaporkan oleh fungsi sistem:

1 = Kursor yang dirujuk oleh nama atau variabel kursor terbuka. Jika kursor tidak sensitif, statis, atau set kunci, setidaknya satu baris. Jika kursor dinamis, kumpulan hasil memiliki nol atau lebih baris.

0 = Kursor yang dirujuk oleh nama atau variabel kursor terbuka tetapi tidak memiliki baris. Kursor dinamis tidak pernah mengembalikan nilai ini.

-1 = Kursor yang dirujuk oleh nama atau variabel kursor ditutup.

-2 = Hanya berlaku untuk variabel kursor. Tidak ada kursor yang ditetapkan ke variabel. Mungkin, OUTPUT parameter menetapkan kursor ke variabel, tetapi prosedur tersimpan menutup kursor sebelum kembali.

-3 = Variabel kursor atau kursor dengan nama yang ditentukan tidak ada, atau variabel kursor tidak memiliki kursor yang dialokasikan untuknya.
model smallint 1 = Tidak peka (atau statis)
2 = Set kunci
3 = Dinamis
4 = Maju Cepat
concurrency smallint 1 = Baca-saja
2 = Kunci gulir
3 = Optimis
scrollable smallint 0 = Teruskan saja
1 = Dapat digulir
open_status smallint 0 = Ditutup
1 = Buka
cursor_rows int Jumlah baris yang memenuhi syarat dalam tataan hasil. Untuk informasi selengkapnya, lihat @@CURSOR_ROWS.
fetch_status smallint Status pengambilan terakhir pada kursor ini. Untuk informasi selengkapnya, lihat @@FETCH_STATUS:

0 = Ambil berhasil.
-1 = Ambil gagal atau berada di luar batas kursor.
-2 = Baris yang diminta hilang.
-9 = Belum ada pengambilan pada kursor.
column_count smallint Jumlah kolom dalam tataan hasil kursor.
row_count smallint Jumlah baris yang dipengaruhi oleh operasi terakhir pada kursor. Untuk informasi selengkapnya, lihat @@ROWCOUNT.
last_operation smallint Operasi terakhir yang dilakukan pada kursor:

0 = Tidak ada operasi yang dilakukan pada kursor.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Nilai unik yang mengidentifikasi kursor dalam cakupan server.

Keterangan

sp_cursor_list menghasilkan daftar kursor server saat ini yang dibuka oleh koneksi dan menjelaskan atribut global untuk setiap kursor, seperti kemampuan gulir dan peningkatan ketersediaan kursor. Kursor yang tercantum dengan sp_cursor_list menyertakan:

  • Kursor server T-SQL.

  • Kursor server API dibuka oleh aplikasi ODBC yang kemudian dipanggil SQLSetCursorName untuk memberi nama kursor.

Gunakan sp_describe_cursor_columns untuk deskripsi atribut kumpulan hasil yang dikembalikan oleh kursor. Gunakan sp_describe_cursor_tables untuk laporan tabel dasar yang dirujuk oleh kursor. sp_describe_cursor melaporkan informasi yang sama dengan sp_cursor_list, tetapi hanya untuk kursor tertentu.

Izin

Jalankan izin default ke peran publik .

Contoh

Contoh berikut membuka kursor global dan menggunakan sp_cursor_list untuk melaporkan atribut kursor.

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT from @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO