SQL सर्वर में, आप SCHEMA_ID()
. का उपयोग कर सकते हैं किसी दिए गए स्कीमा की आईडी वापस करने के लिए कार्य। अधिक विशेष रूप से, यह फ़ंक्शन स्कीमा नाम से संबद्ध स्कीमा आईडी देता है।
यह SCHEMA_NAME()
जैसा है सिवाय इसके कि यह नाम के बजाय स्कीमा की आईडी लौटाता है (और यह आईडी के बजाय नाम पैरामीटर को स्वीकार करता है)।
यदि आप फ़ंक्शन के लिए एक स्कीमा नाम पास नहीं करते हैं, तो यह कॉलर के डिफ़ॉल्ट स्कीमा की आईडी लौटाता है।
उदाहरण 1 - डिफ़ॉल्ट स्कीमा लौटाएं
यहां एक उदाहरण दिया गया है जो कॉलर के डिफ़ॉल्ट स्कीमा की आईडी लौटाता है।
SELECT SCHEMA_ID() AS Result;
परिणाम:
+----------+ | Result | |----------| | 1 | +----------+
यह कॉलर के डिफ़ॉल्ट स्कीमा की आईडी लौटाता है क्योंकि मैंने स्पष्ट रूप से कोई अन्य स्कीमा नाम निर्दिष्ट नहीं किया है।
यहाँ यह फिर से, स्कीमा नाम के साथ है।
SELECT SCHEMA_ID() AS [Schema ID], SCHEMA_NAME() AS [Schema Name];
परिणाम:
+-------------+---------------+ | Schema ID | Schema Name | |-------------+---------------| | 1 | dbo | +-------------+---------------+
उदाहरण 2 - एक अलग स्कीमा निर्दिष्ट करें
इस उदाहरण में मैं स्पष्ट रूप से फ़ंक्शन के लिए एक स्कीमा नाम पास करता हूं।
SELECT SCHEMA_ID('Dimension') AS Result;
परिणाम:
+----------+ | Result | |----------| | 6 | +----------+
यह मुझे बताता है कि आयाम नामक स्कीमा की एक आईडी 6 है।
उदाहरण 3 - डेटाबेस स्विच करना
पिछला उदाहरण सिर्फ एक डेटाबेस में चलाया गया था जिसमें आयाम नामक एक स्कीमा था। अगर मैं किसी भिन्न डेटाबेस पर स्विच करता हूं, तो मुझे एक अलग स्कीमा आईडी या कोई आईडी नहीं मिल सकती है।
मेरे कहने का एक उदाहरण यहां दिया गया है।
USE WideWorldImportersDW; SELECT SCHEMA_ID('Dimension') AS Result; USE Music; SELECT SCHEMA_ID('Dimension') AS Result;
परिणाम:
Changed database context to 'WideWorldImportersDW'. +----------+ | Result | |----------| | 6 | +----------+ (1 row affected) Changed database context to 'Music'. +----------+ | Result | |----------| | NULL | +----------+ (1 row affected)
दूसरा परिणाम NULL
लौटाता है क्योंकि संगीत डेटाबेस में आयाम नामक कोई स्कीमा नहीं है।
उदाहरण 4 - WHERE क्लॉज में
SCHEMA_ID()
का उपयोग करना एक WHERE
. में खंड स्कीमा द्वारा परिणामों को फ़िल्टर करने का एक आसान तरीका हो सकता है।
SQL सर्वर में, विभिन्न सिस्टम दृश्य एक schema_id
. का उपयोग करते हैं स्कीमा आईडी स्टोर करने के लिए कॉलम लेकिन स्कीमा नाम नहीं। इसलिए यदि आप स्कीमा द्वारा परिणामों को फ़िल्टर करने जा रहे हैं तो आपको स्कीमा आईडी जानने की आवश्यकता है। वहीं SCHEMA_ID()
बहुत उपयोगी हो सकता है। यह आपको sys.schemas
. में शामिल होने से बचाता है केवल स्कीमा नाम निकालने के लिए देखें।
यहां SCHEMA_ID()
का उपयोग करने का एक उदाहरण दिया गया है एक WHERE
. में खंड।
USE WideWorldImportersDW; SELECT name, type_desc FROM sys.objects WHERE schema_id = SCHEMA_ID('Dimension');
परिणाम:
Changed database context to 'WideWorldImportersDW'. +----------------------------------------------------+------------------------+ | name | type_desc | |----------------------------------------------------+------------------------| | City | USER_TABLE | | PK_Dimension_City | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_City_City_Key | DEFAULT_CONSTRAINT | | Customer | USER_TABLE | | PK_Dimension_Customer | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Customer_Customer_Key | DEFAULT_CONSTRAINT | | Date | USER_TABLE | | PK_Dimension_Date | PRIMARY_KEY_CONSTRAINT | | Employee | USER_TABLE | | PK_Dimension_Employee | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Employee_Employee_Key | DEFAULT_CONSTRAINT | | Payment Method | USER_TABLE | | PK_Dimension_Payment_Method | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Payment_Method_Payment_Method_Key | DEFAULT_CONSTRAINT | | Stock Item | USER_TABLE | | PK_Dimension_Stock_Item | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Stock_Item_Stock_Item_Key | DEFAULT_CONSTRAINT | | Supplier | USER_TABLE | | PK_Dimension_Supplier | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Supplier_Supplier_Key | DEFAULT_CONSTRAINT | | Transaction Type | USER_TABLE | | PK_Dimension_Transaction_Type | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Transaction_Type_Transaction_Type_Key | DEFAULT_CONSTRAINT | +----------------------------------------------------+------------------------+ (23 rows affected)