sp_describe_cursor (T-SQL)
Berlaku untuk:SQL Server
Melaporkan atribut kursor server.
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)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk