Di SQL Server, Anda dapat menggunakan salah satu dari lima cara berikut untuk mengembalikan daftar tabel sementara menggunakan Transact-SQL.
Ini mengembalikan tabel sementara lokal dan global.
Opsi 1 – sys.tables
sys.tables
tampilan katalog sistem dirancang khusus untuk mengembalikan informasi tabel.
SELECT name FROM tempdb.sys.tables WHERE name LIKE '#%';
Seperti semua tampilan di halaman ini, mengingat kami menginginkan informasi tentang sementara tabel, kita perlu menanyakan tampilan ini di tempdb basis data. Kita dapat melakukannya dengan beralih ke database itu terlebih dahulu (sehingga menjadi database kita saat ini), atau mengkualifikasi kueri kita dengan nama database.
Dalam contoh ini, saya mengkualifikasikan kueri dengan nama database.
Opsi 2 – sys.objects
Anda juga dapat menggunakan sys.objects
tampilan katalog sistem. Jika Anda memilih opsi ini, Anda harus memfilternya menurut jenisnya sehingga hanya tabel pengguna yang ditampilkan.
SELECT name FROM tempdb.sys.objects WHERE type = 'U';
U
singkatan dari "Tabel Pengguna". Cara alternatif untuk melakukannya adalah dengan menggunakan WHERE type_desc = 'USER_TABLE'
.
Opsi 3 – INFORMATION_SCHEMA.TABLES
Jika Anda menginginkan opsi standar ANSI, gunakan INFORMATION_SCHEMA.TABLES
melihat. Jika Anda memilih opsi ini, Anda juga harus memfilternya menurut jenisnya sehingga hanya “tabel dasar” yang ditampilkan.
SELECT TABLE_NAME FROM TempDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'Base Table';
Opsi 4 – sp_tables
Jika Anda mencari opsi prosedur tersimpan, sp_tables
prosedur tersimpan akan berhasil.
USE tempdb; EXEC sp_tables '#%';
Anda juga dapat secara eksplisit memasukkan nama argumen.
USE tempdb; EXEC sp_tables @table_name = '#%', @table_owner = 'dbo', @table_qualifier = 'tempdb', @table_type = "'TABLE'", @fUsePattern = 1;
Anda akan melihat bahwa saya beralih ke tempdb sebelum menjalankan prosedur ini, meskipun saya menyediakan database sebagai salah satu argumen. Ini sebenarnya diperlukan. @table_qualifier
argumen harus cocok dengan database saat ini.
Perhatikan juga bahwa @fUsePattern
pola harus 1 dalam hal ini, karena saya menggunakan operator wildcard dalam nama tabel. Menyetelnya ke 1
memungkinkan pencocokan pola. Menyetelnya ke 0
akan menonaktifkan pencocokan pola.
Opsi 5 – objek dbo.sys
Ini mungkin tidak boleh menjadi pilihan, tetapi saya tetap akan mencantumkannya. dbo.sysobjects
view hanya disertakan dalam SQL Server untuk kompatibilitas mundur. Itu telah ditandai untuk dihentikan dan Microsoft menyarankan untuk tidak menggunakannya. Jika Anda menemukannya di kode Anda, mungkin pertimbangkan untuk mengubahnya ke salah satu opsi sebelumnya.
Bagaimanapun, inilah tampilannya:
SELECT name FROM tempdb..sysobjects WHERE name LIKE '#%';
Jika Anda bertanya-tanya untuk apa titik ganda itu (..
), ini adalah cara cepat untuk menentukan skema default. Dalam hal ini, skema default adalah dbo
, jadi kita juga bisa menulis sebagai berikut:
SELECT name FROM tempdb.dbo.sysobjects WHERE name LIKE '#%';