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

SQL सर्वर में OBJECTPROPERTY () का उपयोग करके जांचें कि क्या कोई ऑब्जेक्ट एक संग्रहीत प्रक्रिया है

SQL सर्वर में आप OBJECTPROPERTY() . का उपयोग कर सकते हैं यह पता लगाने के लिए कार्य करता है कि कोई वस्तु एक संग्रहित प्रक्रिया है या नहीं।

यह फ़ंक्शन दो पैरामीटर स्वीकार करता है:ऑब्जेक्ट आईडी, और वह प्रॉपर्टी जिसके लिए आप इसकी जांच कर रहे हैं।

इसलिए, आप ऑब्जेक्ट आईडी को पहले तर्क के रूप में पास कर सकते हैं, और IsProcedure दूसरे के रूप में, और फ़ंक्शन या तो 1 . लौटाएगा या एक 0 इस पर निर्भर करता है कि यह एक संग्रहीत प्रक्रिया है या नहीं।

1 . का वापसी मान इसका मतलब है कि यह है एक संग्रहीत कार्यविधि, और 0 . का मान इसका मतलब है कि ऐसा नहीं है।

उदाहरण 1 - मूल उपयोग

प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।

WideWorldImportersDW का उपयोग करें;ऑब्जेक्टप्रॉपर्टी चुनें(466100701, 'IsProcedure') AS [IsProcedure];

परिणाम:

+---------------+| प्रक्रिया ||---------------|| 1 |+---------------+

इस मामले में, संगीत डेटाबेस में प्रदान की गई आईडी के साथ एक वस्तु है, और यह वास्तव में एक संग्रहीत प्रक्रिया है।

उदाहरण 2 - ऑब्जेक्ट आईडी प्राप्त करना

यदि आप वस्तु का नाम जानते हैं, लेकिन उसकी आईडी नहीं, तो आप OBJECT_ID() का उपयोग कर सकते हैं आईडी को उसके नाम के आधार पर पुनः प्राप्त करने के लिए कार्य करता है।

उदाहरण:

ऑब्जेक्टप्रॉपर्टी चुनें(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];

परिणाम:

+---------------+| प्रक्रिया ||---------------|| 1 |+---------------+

इस मामले में मैंने पिछले उदाहरण से उसी वस्तु की जाँच की।

यहां यह फिर से अलग से आईडी आउटपुट के साथ है।

चुनें OBJECT_ID('Integration.GetLineageKey') AS [ऑब्जेक्ट आईडी], OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];

परिणाम:

+--------------+---------------+| ऑब्जेक्ट आईडी | प्रक्रिया ||---------------+---------------|| 466100701 | 1 |+---------------+---------------+

उदाहरण 3 - जब वस्तु एक संग्रहित प्रक्रिया नहीं है

यहाँ क्या होता है जब ऑब्जेक्ट एक संग्रहित प्रक्रिया नहीं है।

ऑब्जेक्टप्रॉपर्टी चुनें(1013578649, 'IsProcedure') AS [IsProcedure];

परिणाम:

+---------------+| प्रक्रिया ||---------------|| 0 |+---------------+

इस मामले में, डेटाबेस करता है वास्तव में उस आईडी के साथ एक वस्तु है, लेकिन वस्तु वास्तव में एक तालिका है, इसलिए मुझे एक नकारात्मक परिणाम मिलता है।

यहां यह फिर से OBJECT_ID() का उपयोग कर रहा है ।

चुनें OBJECT_ID('Dimension.City') AS [ऑब्जेक्ट आईडी], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsProcedure') AS [IsProcedure];

परिणाम:

+--------------+---------------+| ऑब्जेक्ट आईडी | प्रक्रिया ||---------------+---------------|| 1013578649 | 0 |+---------------+---------------+

उदाहरण 4 - वस्तु मौजूद नहीं है

SQL सर्वर मानता है कि ऑब्जेक्ट आईडी वर्तमान डेटाबेस संदर्भ में है। यदि आप किसी भिन्न डेटाबेस से ऑब्जेक्ट आईडी पास करते हैं, तो आपको या तो एक पूर्ण परिणाम मिलेगा या आपको गलत परिणाम मिलेंगे।

वस्तु चुनें 

परिणाम:

+---------------------+---------------+| अस्तित्वहीन वस्तु | 1111111 ||---------------------+---------------|| नल | नल |+---------------------+---------------+

इस मामले में डेटाबेस में उस नाम या आईडी की कोई वस्तु नहीं है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्लस्टर्ड और नॉन-क्लस्टर इंडेक्स के बीच अंतर क्या हैं?

  2. मल्टी डायमेंशन OLAP CUBE क्या है और 3 से ज्यादा डायमेंशन वाले क्यूब का उदाहरण दें

  3. केस सेंसिटिव GROUP BY कैसे करें?

  4. SQL सर्वर डेटाबेस में प्राथमिक कुंजी बाधा क्या है - SQL सर्वर / T-SQL ट्यूटोरियल भाग 54

  5. SQL Server 2008 त्रुटि कोड से प्राथमिक कुंजी दोहराव की पहचान कैसे करें?