Di SQL Server, Anda dapat menggunakan SCHEMA_NAME()
berfungsi untuk mengembalikan nama skema tertentu. Cara kerjanya adalah mengembalikan nama skema yang terkait dengan ID skema.
Jika Anda tidak meneruskan ID skema ke fungsi, itu akan mengembalikan nama skema default pemanggil.
Contoh 1 – Kembalikan Skema Default
Berikut adalah contoh yang mengembalikan nama skema default pemanggil.
SELECT SCHEMA_NAME() AS Result;
Hasil:
+----------+ | Result | |----------| | dbo | +----------+
Ini mengembalikan nama skema default pemanggil karena saya tidak secara eksplisit menentukan ID skema lain.
Contoh 2 – Tentukan Skema yang Berbeda
Dalam contoh ini saya meneruskan ID skema ke fungsi.
SELECT SCHEMA_NAME(7) AS Result;
Hasil:
+----------+ | Result | |----------| | Fact | +----------+
Contoh 3 – Berpindah Database
Contoh sebelumnya kebetulan dijalankan di database yang memiliki skema dengan ID 7. Jika saya beralih ke database yang berbeda, saya mungkin mendapatkan nama skema yang berbeda, atau tidak ada nama sama sekali.
Ini contoh yang saya maksud.
USE WideWorldImportersDW; SELECT SCHEMA_NAME(1) AS [1], SCHEMA_NAME(2) AS [2], SCHEMA_NAME(3) AS [3], SCHEMA_NAME(4) AS [4], SCHEMA_NAME(5) AS [5], SCHEMA_NAME(6) AS [6], SCHEMA_NAME(7) AS [7], SCHEMA_NAME(8) AS [8]; USE Music; SELECT SCHEMA_NAME(1) AS [1], SCHEMA_NAME(2) AS [2], SCHEMA_NAME(3) AS [3], SCHEMA_NAME(4) AS [4], SCHEMA_NAME(5) AS [5], SCHEMA_NAME(6) AS [6], SCHEMA_NAME(7) AS [7], SCHEMA_NAME(8) AS [8];
Hasil:
Changed database context to 'WideWorldImportersDW'. +-----+-------+--------------------+-----+-------------+-----------+------+-------------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |-----+-------+--------------------+-----+-------------+-----------+------+-------------| | dbo | guest | INFORMATION_SCHEMA | sys | Application | Dimension | Fact | Integration | +-----+-------+--------------------+-----+-------------+-----------+------+-------------+ (1 row affected) Changed database context to 'Music'. +-----+-------+--------------------+-----+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |-----+-------+--------------------+-----+------+------+------+------| | dbo | guest | INFORMATION_SCHEMA | sys | NULL | NULL | NULL | NULL | +-----+-------+--------------------+-----+------+------+------+------+ (1 row affected)
Empat kolom mengembalikan NULL
di database Musik, karena tidak ada skema dengan ID tersebut.
Contoh 4 – Hasil Kueri yang Lebih Dapat Dibaca
Berikut ini contoh penggunaan SCHEMA_NAME()
untuk menampilkan nama skema alih-alih ID-nya saat mengembalikan hasil dari tampilan sistem.
SELECT schema_id, SCHEMA_NAME(schema_id) AS [Schema Name], name AS [Table Name] FROM sys.tables;
Hasil:
+-------------+---------------+-------------------------+ | schema_id | Schema Name | Table Name | |-------------+---------------+-------------------------| | 8 | Integration | ETL Cutoff | | 8 | Integration | Lineage | | 8 | Integration | Customer_Staging | | 8 | Integration | Employee_Staging | | 8 | Integration | Movement_Staging | | 8 | Integration | Order_Staging | | 8 | Integration | PaymentMethod_Staging | | 6 | Dimension | City | | 8 | Integration | Purchase_Staging | | 6 | Dimension | Customer | | 8 | Integration | Sale_Staging | | 8 | Integration | StockHolding_Staging | | 6 | Dimension | Date | | 8 | Integration | StockItem_Staging | | 6 | Dimension | Employee | | 8 | Integration | Supplier_Staging | | 6 | Dimension | Payment Method | | 8 | Integration | Transaction_Staging | | 8 | Integration | TransactionType_Staging | | 6 | Dimension | Stock Item | | 6 | Dimension | Supplier | | 6 | Dimension | Transaction Type | | 7 | Fact | Movement | | 7 | Fact | Order | | 7 | Fact | Purchase | | 7 | Fact | Sale | | 7 | Fact | Stock Holding | | 7 | Fact | Transaction | | 8 | Integration | City_Staging | +-------------+---------------+-------------------------+
sys.tables
tampilan sistem mengembalikan ID skema tetapi bukan namanya. Itu bukan masalah. ID cukup, karena kita bisa menggunakan SCHEMA_NAME()
untuk menampilkan nama skema, berdasarkan ID tersebut.
Jika kami tidak memiliki SCHEMA_NAME()
fungsinya, kita perlu melakukan join pada sys.schemas
tampilan sistem hanya untuk mendapatkan nama skema.
Contoh 5 – Dalam Klausa WHERE
Berikut ini contoh penggunaan SCHEMA_NAME()
dalam WHERE
klausa.
USE WideWorldImportersDW; SELECT * FROM sys.schemas WHERE name = SCHEMA_NAME(7);
Hasil:
+--------+-------------+----------------+ | name | schema_id | principal_id | |--------+-------------+----------------| | Fact | 7 | 1 | +--------+-------------+----------------+
Jika Anda perlu mendapatkan ID skema, gunakan SCHEMA_ID()
fungsi.