sp_describe_cursor_tables (T-SQL)
Berlaku untuk: SQL Server
Melaporkan objek atau tabel dasar yang dirujuk oleh kursor server.
Sintaks
sp_describe_cursor_tables
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Argumen
[ @cursor_return = ] cursor_return OUTPUT
Nama variabel kursor yang dideklarasikan untuk menerima output kursor. @cursor_return adalah kursor OUTPUT, tanpa default, dan tidak boleh dikaitkan dengan kursor apa pun pada saat sp_describe_cursor_tables
itu dipanggil. Kursor yang dikembalikan adalah kursor baca-saja yang dapat digulir, dinamis.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
Menentukan apakah kursor yang dilaporkan ditentukan dengan menggunakan nama kursor lokal, kursor global, atau variabel kursor. @cursor_source adalah nvarchar(30), tanpa default.
[ @cursor_identity = ] N'cursor_identity'
Ketika @cursor_source adalah , @cursor_identity adalah nama kursor yang DECLARE CURSOR
dibuat oleh pernyataan yang memiliki LOCAL
kata kunci, atau yang default ke LOCAL
. local
Ketika @cursor_source adalah , @cursor_identity adalah nama kursor yang DECLARE CURSOR
dibuat oleh pernyataan yang memiliki GLOBAL
kata kunci, atau yang default ke GLOBAL
. global
@cursor_identity juga dapat menjadi nama kursor server API yang dibuka oleh aplikasi ODBC yang kemudian dinamai kursor dengan memanggil SQLSetCursorName
.
Ketika @cursor_source adalah variable
, @cursor_identity adalah nama variabel kursor yang terkait dengan kursor terbuka.
@cursor_identity adalah nvarchar(128), tanpa default.
Mengembalikan nilai kode
Tidak ada.
Kursor dikembalikan
sp_describe_cursor_tables
merangkum laporannya sebagai 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. Parameter output kursor harus terikat ke variabel program, tetapi API tidak mendukung parameter atau variabel kursor yang diikat.
Tabel berikut ini memperlihatkan format kursor yang dikembalikan oleh sp_describe_cursor_tables
.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
table_owner |
nama sysname | ID pengguna pemilik tabel. |
table_name |
nama sysname | Nama objek atau tabel dasar. Di SQL Server, kursor server selalu mengembalikan objek yang ditentukan pengguna, bukan tabel dasar. |
optimizer_hint |
smallint | Bitmap yang terdiri dari satu atau beberapa opsi berikut: 1 = Penguncian tingkat baris ( ROWLOCK )4 = Penguncian tingkat halaman ( PAGELOCK )8 = Kunci tabel ( TABLOCK )16 = Kunci tabel eksklusif ( TABLOCKX )32 = Perbarui kunci ( UPDLOCK )64 = Tanpa kunci ( NOLOCK )128 = Opsi baris pertama cepat ( FASTFIRST )4096 = Membaca semantik yang dapat diulang saat digunakan dengan DECLARE CURSOR (HOLDLOCK )Ketika beberapa opsi disediakan, sistem menggunakan yang paling ketat. Namun, sp_describe_cursor_tables memperlihatkan bendera yang ditentukan dalam kueri. |
lock_type |
smallint | Jenis kunci gulir diminta secara eksplisit atau implisit untuk setiap tabel dasar yang mendasar kursor ini. Nilainya bisa menjadi salah satu opsi berikut: 0 = Tidak ada 1 = Dibagikan 3 = Pembaruan |
server_name |
sysname, nullable | Nama server tertaut tempat tabel berada. NULL saat OPENQUERY atau OPENROWSET digunakan. |
objectid |
int | ID objek tabel. 0 saat OPENQUERY atau OPENROWSET digunakan. |
dbid |
int | ID database tempat tabel berada. 0 saat OPENQUERY atau OPENROWSET digunakan. |
dbname |
sysname, nullable | Nama database tempat tabel berada. NULL saat OPENQUERY atau OPENROWSET digunakan. |
Keterangan
sp_describe_cursor_tables
menjelaskan tabel dasar yang dirujuk oleh kursor server. Untuk deskripsi atribut kumpulan hasil yang dikembalikan oleh kursor, gunakan sp_describe_cursor_columns
. Untuk deskripsi karakteristik global kursor, seperti kemampuan gulir dan peningkatannya, gunakan sp_describe_cursor
. Untuk mendapatkan laporan kursor server Transact-SQL yang terlihat pada koneksi, gunakan sp_cursor_list
.
Izin
Memerlukan keanggotaan dalam peran publik .
Contoh
Contoh berikut membuka kursor global dan menggunakan sp_describe_cursor_tables
untuk melaporkan tabel yang dirujuk oleh kursor.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
GO
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_tables.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC master.dbo.sp_describe_cursor_tables
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_tables 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_tables.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO