SQL सर्वर में, आप SCHEMA_NAME()
. का उपयोग कर सकते हैं किसी विशेष स्कीमा का नाम वापस करने के लिए कार्य। जिस तरह से यह काम करता है वह यह है कि यह स्कीमा आईडी से जुड़ा स्कीमा नाम देता है।
यदि आप फ़ंक्शन के लिए स्कीमा आईडी पास नहीं करते हैं, तो यह कॉलर के डिफ़ॉल्ट स्कीमा का नाम लौटाता है।
उदाहरण 1 - डिफ़ॉल्ट स्कीमा लौटाएं
यहां एक उदाहरण दिया गया है जो कॉलर के डिफ़ॉल्ट स्कीमा का नाम देता है।
SELECT SCHEMA_NAME() AS Result;
परिणाम:
+----------+ | Result | |----------| | dbo | +----------+
यह कॉलर के डिफ़ॉल्ट स्कीमा का नाम देता है क्योंकि मैंने स्पष्ट रूप से कोई अन्य स्कीमा आईडी निर्दिष्ट नहीं किया है।
उदाहरण 2 - एक अलग स्कीमा निर्दिष्ट करें
इस उदाहरण में मैं फ़ंक्शन के लिए एक स्कीमा आईडी पास करता हूं।
SELECT SCHEMA_NAME(7) AS Result;
परिणाम:
+----------+ | Result | |----------| | Fact | +----------+
उदाहरण 3 - डेटाबेस स्विच करना
पिछला उदाहरण सिर्फ एक डेटाबेस में चलाया गया था जिसमें 7 की आईडी के साथ एक स्कीमा था। अगर मैं एक अलग डेटाबेस पर स्विच करता हूं, तो मुझे एक अलग स्कीमा नाम मिल सकता है, या कोई नाम नहीं मिल सकता है।
मेरे कहने का एक उदाहरण यहां दिया गया है।
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];
परिणाम:
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)
चार कॉलम NULL
लौटाते हैं संगीत डेटाबेस पर, क्योंकि उस आईडी के साथ कोई स्कीमा नहीं है।
उदाहरण 4 - अधिक पठनीय क्वेरी परिणाम
यहां SCHEMA_NAME()
का उपयोग करने का एक उदाहरण दिया गया है सिस्टम दृश्य से परिणाम लौटाते समय इसकी आईडी के बजाय स्कीमा नाम प्रस्तुत करने के लिए।
SELECT schema_id, SCHEMA_NAME(schema_id) AS [Schema Name], name AS [Table Name] FROM sys.tables;
परिणाम:
+-------------+---------------+-------------------------+ | 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
सिस्टम व्यू स्कीमा आईडी देता है लेकिन उसका नाम नहीं। हालांकि यह कोई समस्या नहीं है। आईडी पर्याप्त है, क्योंकि हम SCHEMA_NAME()
. का उपयोग कर सकते हैं उस आईडी के आधार पर स्कीमा का नाम प्रदर्शित करने के लिए।
अगर हमारे पास SCHEMA_NAME()
नहीं होता फ़ंक्शन, हमें sys.schemas
. पर एक जॉइन करना होगा केवल स्कीमा का नाम प्राप्त करने के लिए सिस्टम दृश्य।
उदाहरण 5 - WHERE क्लॉज में
यहां SCHEMA_NAME()
का उपयोग करने का एक उदाहरण दिया गया है एक WHERE
. में खंड।
USE WideWorldImportersDW; SELECT * FROM sys.schemas WHERE name = SCHEMA_NAME(7);
परिणाम:
+--------+-------------+----------------+ | name | schema_id | principal_id | |--------+-------------+----------------| | Fact | 7 | 1 | +--------+-------------+----------------+
यदि आपको स्कीमा की आईडी प्राप्त करने की आवश्यकता है, तो SCHEMA_ID()
. का उपयोग करें समारोह।