sp_special_columns (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Mengembalikan kumpulan kolom optimal yang secara unik mengidentifikasi baris dalam tabel. Juga mengembalikan kolom yang diperbarui secara otomatis saat nilai apa pun dalam baris diperbarui oleh transaksi.

Konvensi sintaks transact-SQL

Sintaks

sp_special_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @col_type = ] 'col_type' ]
    [ , [ @scope = ] 'scope' ]
    [ , [ @nullable = ] 'nullable' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

Argumen

[ @table_name = ] N'table_name'

Nama tabel yang digunakan untuk mengembalikan informasi katalog. @table_name adalah sysname, tanpa default. Pencocokan pola kartubebas tidak didukung.

[ @table_owner = ] N'table_owner'

Pemilik tabel tabel yang digunakan untuk mengembalikan informasi katalog. @table_owner adalah sysname, dengan default NULL. Pencocokan pola kartubebas tidak didukung. Jika @table_owner tidak ditentukan, aturan visibilitas tabel default dari sistem manajemen database (DBMS) yang mendasar berlaku.

Di SQL Server, jika pengguna saat ini memiliki tabel dengan nama yang ditentukan, kolom tabel tersebut dikembalikan. Jika @table_owner tidak ditentukan, dan pengguna saat ini tidak memiliki tabel @table_name yang ditentukan, prosedur ini mencari tabel @table_name yang ditentukan yang dimiliki oleh pemilik database. Jika tabel ada, kolomnya dikembalikan.

[ @table_qualifier = ] N'table_qualifier'

Nama kualifikasi tabel. @table_qualifier adalah sysname, dengan default NULL. Berbagai produk DBMS mendukung penamaan tiga bagian untuk tabel (<qualifier>.<owner>.<name>). Di SQL Server, kolom ini mewakili nama database. Dalam beberapa produk, ini mewakili nama server lingkungan database tabel.

[ @col_type = ] 'col_type'

Jenis kolom. @col_type adalah char(1), dengan default R.

  • Jenis R mengembalikan kolom atau kumpulan kolom optimal yang, dengan mengambil nilai dari kolom atau kolom, memungkinkan baris apa pun dalam tabel yang ditentukan diidentifikasi secara unik. Kolom dapat berupa pseudocolumn yang dirancang untuk tujuan ini, atau kolom atau kolom indeks unik apa pun untuk tabel.

  • Jenis V mengembalikan kolom atau kolom dalam tabel yang ditentukan, jika ada, yang secara otomatis diperbarui oleh sumber data ketika nilai apa pun dalam baris diperbarui oleh transaksi apa pun.

[ @scope = ] 'cakupan'

Cakupan minimum yang diperlukan ROWID. @scope adalah char(1), dengan default T.

  • Cakupan C menentukan bahwa ROWID hanya valid saat diposisikan pada baris tersebut.
  • Cakupan T menentukan bahwa ROWID valid untuk transaksi.

[ @nullable = ] 'nullable'

Menentukan apakah kolom khusus dapat menerima NULL nilai. @nullable adalah char(1), dengan default U.

  • O menentukan kolom khusus yang tidak memperbolehkan nilai null.
  • U menentukan kolom yang sebagian nullable.

[ @ODBCVer = ] ODBCVer

Versi ODBC yang digunakan. @ODBCVer int, dengan default 2. Nilai ini menunjukkan ODBC versi 2.0. Untuk informasi selengkapnya tentang perbedaan antara ODBC versi 2.0 dan ODBC versi 3.0, lihat spesifikasi ODBC SQLSpecialColumns untuk ODBC versi 3.0.

Mengembalikan nilai kode

Tidak ada.

Tataan hasil

Nama kolom Jenis data Deskripsi
SCOPE smallint Cakupan aktual ID baris. Bisa 0, 1, atau 2. SQL Server selalu mengembalikan 0. Bidang ini selalu mengembalikan nilai.

0 = SQL_SCOPE_CURROW. ID baris dijamin hanya valid saat diposisikan pada baris tersebut. Pemilihan ulang nanti menggunakan ID baris mungkin tidak mengembalikan baris jika baris diperbarui atau dihapus oleh transaksi lain.
1 = SQL_SCOPE_TRANSACTION. ID baris dijamin valid selama durasi transaksi saat ini.
2 = SQL_SCOPE_SESSION. ID baris dijamin valid selama durasi sesi (di seluruh batas transaksi).
COLUMN_NAME nama sysname Nama kolom untuk setiap kolom @table_name dikembalikan. Bidang ini selalu mengembalikan nilai.
DATA_TYPE smallint Jenis data ODBC SQL.
TYPE_NAME nama sysname Nama jenis data yang bergantung pada sumber data; misalnya, karakter, varchar, uang, atau teks.
PRECISION int Presisi kolom pada sumber data. Bidang ini selalu mengembalikan nilai.
LENGTH int Panjang, dalam byte, diperlukan untuk jenis data dalam bentuk binernya di sumber data, misalnya, 10 untuk karakter(10), 4 untuk bilangan bulat, dan 2 untuk smallint.
SCALE smallint Skala kolom pada sumber data. NULL dikembalikan untuk jenis data yang skalanya tidak berlaku.
PSEUDO_COLUMN smallint Menunjukkan apakah kolom adalah pseudocolumn. SQL Server selalu mengembalikan 1:

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Keterangan

sp_special_columns setara dengan SQLSpecialColumns di ODBC. Hasil yang dikembalikan diurutkan oleh SCOPE.

Izin

SELECT Memerlukan izin pada skema.

Contoh

Contoh berikut mengembalikan informasi tentang kolom yang secara unik mengidentifikasi baris dalam HumanResources.Department tabel.

USE AdventureWorks2022;
GO

EXEC sp_special_columns @table_name = 'Department',
    @table_owner = 'HumanResources';