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 = ] 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_columns 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 lalu 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_columns 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 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_columns.

Nama kolom Jenis data Deskripsi
column_name sysname (nullable) Nama ditetapkan ke kolom tataan hasil. Kolom adalah NULL jika kolom ditentukan tanpa klausa AS yang menyertainya.
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 dalam DBCOLUMNFLAGS di OLE DB. Bisa berupa salah satu atau kombinasi dari yang berikut ini:

1 = Bookmark

2 = Panjang tetap

4 = Nullable

8 = Penerapan versi baris

16 = Kolom yang dapat diperbarui (diatur untuk kolom kursor yang diproyeksikan yang tidak memiliki klausa FOR UPDATE dan, jika ada kolom seperti itu, bisa hanya satu per kursor).

Ketika nilai bit digabungkan, karakteristik nilai bit gabungan berlaku. Misalnya, jika nilai bit adalah 6, kolom adalah kolom dengan panjang tetap (2), dapat diubah ke null (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 nilai bPresisi dalam OLE DB.
column_scale kecil Jumlah digit di sebelah kanan titik desimal untuk jenis data numerik atau desimal sesuai nilai bScale di 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)(nullable) A = Kolom berada dalam kunci pesanan dan urutannya naik.

D = Kolom berada dalam kunci pesanan dan urutannya menur

NULL = Kolom tidak berpartisipasi dalam pengurutan.
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.
nama db nama sysname

(nullable)
Nama database yang berisi tabel dasar yang menyediakan kolom. Jika kolom tataan hasil dibangun dari ekspresi, dbname adalah 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  

Lihat Juga

Kursor
CURSOR_STATUS (T-SQL)
DEKLARASIKAN KURSOR (Transact-SQL)
sp_describe_cursor (T-SQL)
sp_cursor_list (T-SQL)
sp_describe_cursor_tables (T-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)