Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में SCHEMA_ID () कैसे काम करता है

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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में एक अस्थायी तालिका में संग्रहीत कार्यविधि के परिणाम कैसे सम्मिलित करें

  2. NOT IN क्लॉज के अंदर NULL मान

  3. अंकगणित अतिप्रवाह त्रुटि अभिव्यक्ति को डेटा प्रकार डेटाटाइम में परिवर्तित करना। (दिनांक समय प्रदर्शित करते समय ..)

  4. केवल पंक्तियों द्वारा sql समूह जो क्रम में हैं

  5. जांचें कि क्या तालिका मौजूद है और यदि यह मौजूद नहीं है, तो इसे SQL Server 2008 में बनाएं