Bagikan melalui


sp_describe_cursor_columns (T-SQL)

Berlaku untuk: SQL Server

Melaporkan atribut kolom dalam kumpulan hasil kursor server.

Konvensi sintaks transact-SQL

Sintaks

sp_describe_cursor_columns
    [ @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 parameter OUTPUT dari jenis int, tanpa default, dan tidak boleh dikaitkan dengan kursor apa pun pada saat sp_describe_cursor_columns 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'

Nama kursor yang dibuat oleh DECLARE CURSOR pernyataan. @cursor_identity adalah nvarchar(128), tanpa default.

  • Jika kursor memiliki LOCAL kata kunci, atau default ke LOCAL, @cursor_identity adalah local.

  • Jika kursor memiliki GLOBAL kata kunci, atau default ke GLOBAL, @cursor_identity adalah global. @cursor_identity juga dapat menjadi nama kursor server API yang dibuka oleh aplikasi ODBC, lalu dinamai dengan memanggil SQLSetCursorName.

  • Jika tidak, @cursor_identity adalah nama variabel kursor yang terkait dengan kursor terbuka.

Mengembalikan nilai kode

Tidak ada.

Kursor dikembalikan

sp_describe_cursor_columns merangkum laporannya sebagai parameter output Transact-SQL cursor . 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 cursor output harus terikat ke variabel program, tetapi API database tidak mendukung parameter atau variabel pengikatan cursor .

Tabel berikut ini memperlihatkan format kursor yang dikembalikan dengan menggunakan sp_describe_cursor_columns.

Nama kolom Jenis data Deskripsi
column_name nama sysname Nama ditetapkan ke kolom tataan hasil. Kolom adalah NULL jika kolom ditentukan tanpa klausa yang AS menyertainya.

Dapat diubah ke null.
ordinal_position int Posisi relatif kolom dari kolom paling kiri dalam tataan hasil. Kolom pertama berada di posisi 0.
column_characteristics_flags int Bitmask yang menunjukkan informasi yang disimpan di DBCOLUMNFLAGS OLE DB. Bisa berupa satu atau kombinasi dari nilai berikut:

1 = Bookmark
2 = Panjang tetap
4 = Nullable
8 = Penerapan versi baris
16 = Kolom yang dapat diperbarui (diatur untuk kolom kursor yang diproyeksikan yang tidak ada FOR UPDATE klausa dan, jika ada kolom seperti itu, hanya boleh satu per kursor).

Ketika nilai bit digabungkan, karakteristik nilai bit gabungan berlaku. Misalnya, jika nilai bit adalah 6, kolom adalah kolom panjang tetap (2), nullable (4).
column_size int Ukuran maksimum yang mungkin untuk nilai dalam kolom ini.
data_type_sql smallint Angka yang menunjukkan jenis data SQL Server kolom.
column_precision kecil Presisi maksimum kolom sesuai bPrecision nilai dalam OLE DB.
column_scale kecil Jumlah digit di sebelah kanan titik desimal untuk jenis data numerik atau desimal sesuai bScale nilai dalam OLE DB.
order_position int Jika kolom berpartisipasi dalam urutan kumpulan hasil, posisi kolom dalam kunci pesanan relatif terhadap kolom paling kiri.
order_direction varchar(1) A = Kolom berada dalam kunci pesanan dan urutannya naik.
D = Kolom berada dalam kunci pesanan dan pengurutan turun.

NULL = Kolom tidak berpartisipasi dalam pengurutan.

Dapat diubah ke null.
hidden_column smallint 0 = kolom ini muncul di daftar pilih.

1 = Dicadangkan untuk digunakan di masa mendatang.
columnid int ID kolom kolom dasar. Jika kolom kumpulan hasil dibangun dari ekspresi, columnid adalah -1.
objectid int ID objek objek atau tabel dasar yang menyediakan kolom. Jika kolom kumpulan hasil dibangun dari ekspresi, objectid adalah -1.
dbid int ID database yang berisi tabel dasar yang menyediakan kolom. Jika kolom kumpulan hasil dibangun dari ekspresi, dbid adalah -1.
dbname nama sysname Nama database yang berisi tabel dasar yang menyediakan kolom. Jika kolom kumpulan hasil dibangun dari ekspresi, dbname adalah NULL.

Dapat diubah ke null.

Keterangan

sp_describe_cursor_columns menjelaskan atribut kolom dalam kumpulan hasil kursor server, seperti nama dan jenis data setiap kursor. Gunakan sp_describe_cursor untuk deskripsi atribut global kursor server. 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.

Izin

Memerlukan keanggotaan dalam peran publik .

Contoh

Contoh berikut membuka kursor global dan menggunakan sp_describe_cursor_columns untuk melaporkan kolom yang digunakan dalam kursor.

USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
    SELECT LastName
    FROM Person.Person;
GO
OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report CURSOR;

-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC master.dbo.sp_describe_cursor_columns
    @cursor_return = @Report OUTPUT,
    @cursor_source = N'global',
    @cursor_identity = N'abc';

-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO