SQL सर्वर में, आपको OBJECTPROPERTY()
. का सामना करना पड़ सकता है फ़ंक्शन, केवल यह पता लगाने के लिए कि एक OBJECTPROPERTYEX()
भी है ऐसा लगता है कि फ़ंक्शन बिल्कुल वही काम करता है।
यहाँ क्या चल रहा है? एक ही काम करने वाले दो कार्यों की आवश्यकता क्यों है?
मेरी समझ यह है कि माइक्रोसॉफ्ट ने OBJECTPROPERTYEX()
. जोड़ना चुना है OBJECTPROPERTY()
. की कार्यक्षमता बढ़ाने के लिए , OBJECTPROPERTY()
. में परिवर्तन करने के बजाय जो संभावित रूप से पुराने सिस्टम पर मौजूदा कोड को तोड़ देगा।
तो कुछ कुछ हैं दो कार्यों के बीच अंतर।
क्या अलग है?
संक्षेप में, OBJECTPROPERTYEX()
छह अतिरिक्त गुणों का समर्थन करता है, और इसका रिटर्न प्रकार अलग है।
यह रहा एक विश्लेषण।
वस्तु संपत्ति () | OBJECTPROPERTYEX () | |
---|---|---|
रिटर्न प्रकार | इंट | sql_variant |
समर्थित संपत्तियों की संख्या | 103 | 109 |
अतिरिक्त गुण |
| |
समर्थित गुण |
|
|
अतिरिक्त गुणों का उदाहरण
यहां एक उदाहरण दिया गया है जो उपयोग में आने वाली इन अतिरिक्त संपत्तियों को दिखाता है।
वाइडवर्ल्ड इम्पोर्टर्स डीडब्ल्यू का उपयोग करें; DECLARE @objectId int =OBJECT_ID (N'Integration.GenerateDateDimensionColumns'); चयन OBJECTPROPERTYEX(@objectId, 'BaseType') AS बेसटाइप, OBJECTPROPERTYEX(@objectId, 'IsPrecise, ECTPROPERD ASPrecise, ECTPROPERD ASPrecise') , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess, OBJECTPROPERTYEX(@obJECTPROPERTYEX(@obJECTPROPERTYEX)परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
बेस टाइप | IFIsसटीक | 0SystemDataAccess | 1TableFullTextSemanticExtraction | 0UserDataAccess | 1 कार्डिनैलिटी | शून्यइस मामले में, ऑब्जेक्ट एक तालिका-मूल्यवान फ़ंक्शन है, और यह छह गुणों में से पांच के लिए डेटा लौटाता है।
आइए अब इसके बजाय तालिका के नाम से गुजरते हैं यह देखने के लिए कि क्या हम कार्डिनैलिटी के लिए एक मूल्य प्राप्त कर सकते हैं।
वाइडवर्ल्ड इम्पोर्टर्स डीडब्ल्यू का उपयोग करें; DECLARE @objectId int =OBJECT_ID(N'Dimension.City'); OBJECTPROPERTYEX(@objectId, 'BaseType') को बेस टाइप, OBJECTPROPERTYEX(@objectId, 'IsPrecise') के रूप में IsPrecise, OBJECTId के रूप में चुनें , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess, OBJECTPROPERTYEX(@obJECTPROPERTYEX(@obJECTPROPERTYEX)परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
बेस टाइप | यू सटीक | NULLSystemDataAccess | NULLTableFullTextSemanticExtraction | 0UserDataAccess | न्यूलकार्डिनैलिटी | 116295इस बार हमें तीन संपत्तियों के लिए NULL मिलता है, लेकिन हमें कार्डिनैलिटी संपत्ति के लिए एक मूल्य मिलता है।