sp_describe_cursor_tables (T-SQL)

Berlaku untuk:SQL Server

Melaporkan objek atau tabel dasar yang dirujuk oleh kursor server.

Konvensi sintaks transact-SQL

Sintaks

sp_describe_cursor_tables
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'variable' }
    , [ @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'variabel' }

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_tablesmerangkum 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