sp_describe_cursor (T-SQL)

Berlaku untuk:SQL Server

Melaporkan atribut kursor server.

Konvensi sintaks transact-SQL

Sintaks

  
sp_describe_cursor [ @cursor_return = ] output_cursor_variable OUTPUT   
     { [ , [ @cursor_source = ] N'local'  
    , [ @cursor_identity = ] N'local_cursor_name' ]   
   | [ , [ @cursor_source = ] N'global'  
    , [ @cursor_identity = ] N'global_cursor_name' ]   
   | [ , [ @cursor_source = ] N'variable'  
     , [ @cursor_identity = ] N'input_cursor_variable' ]   
     }   
[;]  

Argumen

[ @cursor_return= ] output_cursor_variable OUTPUT
Adalah nama variabel kursor yang dideklarasikan untuk menerima output kursor. output_cursor_variable adalah kursor, tanpa default, dan tidak boleh dikaitkan dengan kursor apa pun pada saat sp_describe_cursor dipanggil. Kursor yang dikembalikan adalah kursor baca-saja yang dapat digulir, dinamis.

[ @cursor_source= ] { N'local' | N'global' | N'variabel' }
Menentukan apakah kursor yang dilaporkan ditentukan dengan menggunakan nama kursor lokal, kursor global, atau variabel kursor. Parameternya adalah nvarchar(30).

[ @cursor_identity= ] N'local_cursor_name ' ]
Adalah nama kursor yang dibuat oleh pernyataan DECLARE CURSOR yang memiliki kata kunci LOCAL atau yang default ke LOCAL. local_cursor_name adalah nvarchar(128).

[ @cursor_identity= ] N'global_cursor_name ' ]
Adalah nama kursor yang dibuat oleh pernyataan DECLARE CURSOR yang memiliki kata kunci GLOBAL atau yang default ke GLOBAL. global_cursor_name adalah nvarchar(128).

global_cursor_name juga dapat menjadi nama kursor server API yang dibuka oleh aplikasi ODBC yang kemudian dinamai dengan memanggil SQLSetCursorName.

[ @cursor_identity= ] N'input_cursor_variable ' ]
Adalah nama variabel kursor yang terkait dengan kursor terbuka. input_cursor_variable adalah nvarchar(128).

Mengembalikan Nilai Kode

Tidak ada

Kursor Dikembalikan

sp_describe_cursor merangkum hasilnya yang ditetapkan dalam parameter output kursor Transact-SQL. Ini memungkinkan batch Transact-SQL, prosedur tersimpan, dan pemicu untuk bekerja dengan output satu baris pada satu waktu. Ini juga berarti bahwa 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.

Tabel berikut ini memperlihatkan format kursor yang dikembalikan dengan menggunakan sp_describe_cursor. Format kursor sama dengan format yang dikembalikan dengan menggunakan sp_cursor_list.

Nama kolom Jenis data Deskripsi
reference_name nama sysname Nama yang digunakan untuk merujuk ke kursor. Jika referensi ke kursor melalui nama yang ditentukan pada pernyataan DECLARE CURSOR, nama referensi sama dengan nama kursor. Jika referensi ke kursor melalui variabel, nama referensi adalah nama variabel.
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 versi SQL Server yang lebih lama, kolom output ini mengembalikan nama yang dihasilkan sistem.
cursor_scope kecil 1 = LOKAL

2 = GLOBAL
status int 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 kecil 1 = Tidak peka (atau statis)

2 = Set Kunci

3 = Dinamis

4 = Maju Cepat
konkurensi kecil 1 = Baca-saja

2 = Kunci gulir

3 = Optimis
Digulir kecil 0 = Teruskan-saja

1 = Dapat digulir
open_status kecil 0 = Ditutup

1 = Buka
cursor_rows desimal(10,0) Jumlah baris yang memenuhi syarat dalam tataan hasil. Untuk informasi selengkapnya, lihat @@CURSOR_ROWS (Transact-SQL).
fetch_status smallint Status pengambilan terakhir pada kursor ini. Untuk informasi selengkapnya, lihat @@FETCH_STATUS (Transact-SQL).

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 desimal(10,0) Jumlah baris yang dipengaruhi oleh operasi terakhir pada kursor. Untuk informasi selengkapnya, lihat @@ROWCOUNT (Transact-SQL).
last_operation kecil 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 untuk kursor dalam cakupan server.

Keterangan

sp_describe_cursor menjelaskan atribut yang global ke kursor server, seperti kemampuan untuk menggulir dan memperbarui. 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. Untuk mendapatkan laporan kursor server Transact-SQL yang terlihat pada koneksi, gunakan sp_cursor_list.

Pernyataan DECLARE CURSOR dapat meminta jenis kursor yang tidak dapat didukung SQL Server menggunakan pernyataan SELECT yang terkandung dalam KURSOR DEKLARASI. SQL Server secara implisit mengonversi kursor ke jenis yang dapat didukungnya menggunakan pernyataan SELECT. Jika TYPE_WARNING ditentukan dalam pernyataan DECLARE CURSOR, SQL Server mengirimkan pesan informasi kepada aplikasi bahwa konversi telah selesai. sp_describe_cursor kemudian dapat dipanggil untuk menentukan jenis kursor yang telah diimplementasikan.

Izin

Memerlukan keanggotaan dalam peran publik.

Contoh

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

USE AdventureWorks2022;  
GO  
-- Declare and open a global cursor.  
DECLARE abc CURSOR STATIC FOR  
SELECT LastName  
FROM Person.Person;  
  
OPEN abc;  
  
-- Declare a cursor variable to hold the cursor output variable  
-- from sp_describe_cursor.  
DECLARE @Report CURSOR;  
  
-- Execute sp_describe_cursor into the cursor variable.  
EXEC master.dbo.sp_describe_cursor @cursor_return = @Report OUTPUT,  
        @cursor_source = N'global', @cursor_identity = N'abc';  
  
-- Fetch all the rows from the sp_describe_cursor output cursor.  
FETCH NEXT from @Report;  
WHILE (@@FETCH_STATUS <> -1)  
BEGIN  
    FETCH NEXT from @Report;  
END  
  
-- Close and deallocate the cursor from sp_describe_cursor.  
CLOSE @Report;  
DEALLOCATE @Report;  
GO  
  
-- Close and deallocate the original cursor.  
CLOSE abc;  
DEALLOCATE abc;  
GO  

Lihat Juga

Kursor
CURSOR_STATUS (T-SQL)
DEKLARASIKAN KURSOR (Transact-SQL)
sp_cursor_list (T-SQL)
sp_describe_cursor_columns (T-SQL)
sp_describe_cursor_tables (T-SQL)