OBJECTPROPERTY()
SQL सर्वर में फ़ंक्शन आपको किसी विशिष्ट प्रॉपर्टी के लिए किसी ऑब्जेक्ट की जांच करने में सक्षम बनाता है।
आप इस फ़ंक्शन का उपयोग यह जांचने के लिए कर सकते हैं कि कोई ऑब्जेक्ट सिस्टम टेबल है या नहीं। ऐसा करने के लिए, ऑब्जेक्ट आईडी को पहले तर्क के रूप में पास करें, और IsSystemTable
दूसरे तर्क के रूप में। फ़ंक्शन एक 1
देता है या एक 0
इस पर निर्भर करता है कि यह सिस्टम टेबल है या नहीं (1
इसका मतलब है कि यह है एक सिस्टम टेबल, और 0
इसका मतलब है कि यह नहीं है)।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।
SELECT OBJECTPROPERTY(3, 'IsSystemTable') AS [IsSystemTable];
परिणाम:
+-----------------+ | IsSystemTable | |-----------------| | 1 | +-----------------+
इस मामले में, वस्तु है एक सिस्टम टेबल।
उदाहरण 2 - ऑब्जेक्ट सिस्टम टेबल नहीं है
यहां बताया गया है कि जब ऑब्जेक्ट सिस्टम टेबल नहीं होता है तो क्या होता है।
SELECT OBJECTPROPERTY(1013578649, 'IsSystemTable') AS [IsSystemTable];
परिणाम:
+-----------------+ | IsSystemTable | |-----------------| | 0 | +-----------------+
इस मामले में, डेटाबेस करता है वास्तव में उस आईडी के साथ एक वस्तु है, लेकिन वस्तु वास्तव में एक उपयोगकर्ता द्वारा परिभाषित तालिका है, इसलिए मुझे एक नकारात्मक परिणाम मिलता है।
यहां यह फिर से OBJECT_ID()
का उपयोग कर रहा है वस्तु के नाम से आईडी प्राप्त करने के लिए।
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsSystemTable') AS [IsSystemTable], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];
परिणाम:
+-------------+-----------------+---------------+ | Object ID | IsSystemTable | IsUserTable | |-------------+-----------------+---------------| | 1013578649 | 0 | 1 | +-------------+-----------------+---------------+
मैंने यह देखने के लिए भी जाँच की कि क्या वस्तु एक उपयोगकर्ता द्वारा परिभाषित तालिका है, और परिणाम सकारात्मक है।
उदाहरण 3 - वस्तु मौजूद नहीं है
SQL सर्वर मानता है कि ऑब्जेक्ट आईडी वर्तमान डेटाबेस संदर्भ में है। यदि आप किसी भिन्न डेटाबेस से ऑब्जेक्ट आईडी पास करते हैं, तो आपको या तो एक पूर्ण परिणाम मिलेगा या आपको गलत परिणाम मिलेंगे।
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsSystemTable') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsSystemTable') AS [12345678];
परिणाम:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
इस मामले में डेटाबेस में उस नाम या आईडी की कोई वस्तु नहीं है, और इसलिए मुझे एक पूर्ण परिणाम मिलता है।
त्रुटि होने पर या यदि आपके पास ऑब्जेक्ट देखने की अनुमति नहीं है, तो आपको NULL भी मिलेगा।