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_variable_name OUTPUT   
     , [ @cursor_scope = ] cursor_scope  
[;]  

Argumen

[ @cursor_return= ] cursor_variable_nameOUTPUT
Adalah nama variabel kursor yang dideklarasikan. cursor_variable_name adalah kursor, tanpa default. 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 diberikan pada pernyataan DECLARE CURSOR, 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 = LOKAL

2 = GLOBAL
status smallint Nilai yang sama seperti yang dilaporkan oleh fungsi sistem CURSOR_STATUS:

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

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

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

-2 = Hanya berlaku untuk variabel kursor. Tidak ada kursor yang ditetapkan ke variabel. Mungkin, parameter OUTPUT 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 belum memiliki kursor yang dialokasikan untuknya.
model smallint 1 = Tidak peka (atau statis)

2 = Set Kunci

3 = Dinamis

4 = Maju Cepat
konkurensi smallint 1 = Baca-saja

2 = Kunci gulir

3 = Optimis
Digulir 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 = BUKA

2 = AMBIL

3 = SISIPKAN

4 = PERBARUI

5 = HAPUS

6 = TUTUP

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 oleh sp_cursor_list meliputi:

  • Kursor server T-SQL.

  • Kursor server API dibuka oleh aplikasi ODBC yang kemudian disebut 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  

Lihat Juga

Prosedur Tersimpan Sistem (Transact-SQL)