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

जाँच करें कि क्या ऑब्जेक्ट OBJECTPROPERTY () फ़ंक्शन का उपयोग करके SQL सर्वर में एक तालिका, दृश्य या संग्रहीत प्रक्रिया है

SQL सर्वर में आप OBJECTPROPERTY() . का उपयोग कर सकते हैं किसी वस्तु के प्रकार की जाँच करने के लिए कार्य करता है। अधिक विशेष रूप से, आप जांच सकते हैं कि यह एक विशिष्ट प्रकार है या नहीं।

उदाहरण के लिए, IsTable संपत्ति आपको बताती है कि यह एक तालिका है या नहीं, IsView संपत्ति आपको बताती है कि यह एक दृश्य है या नहीं, आदि।

यह आलेख कुछ बुनियादी उदाहरण प्रस्तुत करता है जो जांचते हैं कि कोई वस्तु एक तालिका, दृश्य, संग्रहीत कार्यविधि या तालिका-मूल्यवान फ़ंक्शन है या नहीं।

उदाहरण 1 - तालिका की जांच करें

यहां एक उदाहरण दिया गया है जो यह जांचता है कि कोई वस्तु एक तालिका है या नहीं।

USE Music; 
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsTable') AS [IsTable];

परिणाम:

+-----------+
| IsTable   |
|-----------|
| 1         |
+-----------+

यहाँ, वस्तु का नाम है Artists और स्कीमा dbo . है .

इस मामले में, परिणाम 1 . है , जो इंगित करता है कि वस्तु वास्तव में एक तालिका है।

उदाहरण 2 - देखने के लिए जांचें

यहां एक उदाहरण दिया गया है जो यह जांचता है कि कोई वस्तु एक दृश्य है या नहीं।

USE Music; 
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsView') AS [IsView];

परिणाम:

+----------+
| IsView   |
|----------|
| 0        |
+----------+

इस मामले में, मैं पिछले उदाहरण से उसी वस्तु की जांच कर रहा हूं, और इसलिए हम पहले से ही जानते हैं कि यह एक दृश्य नहीं है। इसलिए, परिणाम 0 . है , जो इंगित करता है कि यह एक दृश्य नहीं है।

यहाँ एक और उदाहरण है, इस बार वस्तु वास्तव में एक दृश्य है:

SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.RockAlbums'), 'IsView') AS [IsView];

परिणाम:

+----------+
| IsView   |
|----------|
| 1        |
+----------+

ध्यान दें कि मैंने USE Music; . को हटा दिया है भाग, क्योंकि मैं पहले से ही उस डेटाबेस में हूँ। OBJECTPROPERTY() वर्तमान डेटाबेस में केवल स्कीमा-स्कोप्ड ऑब्जेक्ट्स की जाँच करता है।

उदाहरण 3 - सशर्त विवरण

हम अवधारणा को एक कदम आगे ले जा सकते हैं, और पिछले उदाहरणों को IF . में शामिल कर सकते हैं बयान। इस तरह हम यह पता लगाने के लिए एक ही स्टेटमेंट चला सकते हैं कि ऑब्जेक्ट किस प्रकार का है।

नीचे बुनियादी उदाहरण दिए गए हैं जो केवल ऑब्जेक्ट प्रकार को आउटपुट करते हैं।

टेबल

DECLARE @TheObject varchar(255) = 'dbo.Artists';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

परिणाम:

Table

इस मामले में, वस्तु एक तालिका है।

यहां और उदाहरण दिए गए हैं जो समान कथन का उपयोग करते हैं, लेकिन विभिन्न ऑब्जेक्ट प्रकारों के साथ।

देखें

DECLARE @TheObject varchar(255) = 'dbo.RockAlbums';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

परिणाम:

View

संग्रहीत प्रक्रिया

DECLARE @TheObject varchar(255) = 'dbo.uspGetAlbumsByArtist';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

परिणाम:

Stored Procedure

टेबल-वैल्यूड फंक्शन

DECLARE @TheObject varchar(255) = 'dbo.ufn_AlbumsByGenre1';
IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
  PRINT 'View';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
  PRINT 'Table';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
  PRINT 'Stored Procedure';
ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
  PRINT 'Table-valued Function';
ELSE
  PRINT 'Unknown. Maybe add more types to this statement.';

परिणाम:

Table-valued Function

आप इसे और अधिक उपयोगी बनाने के लिए कथन में और प्रकार जोड़ सकते हैं। मैंने तर्क सूचीबद्ध किए हैं कि OBJECTPROPERTY() इस पृष्ठ पर स्वीकार करता है। हालांकि वे सभी ऑब्जेक्ट प्रकार नहीं हैं - कई अलग-अलग गुण हैं जिनकी आप जांच कर सकते हैं।

प्रत्येक गुण के पूर्ण विवरण के लिए, Microsoft दस्तावेज़ देखें।


  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 सर्वर 2008:मैं उपयोगकर्ता नाम को विशेषाधिकार कैसे प्रदान करूं?

  2. =* का क्या अर्थ है?

  3. SQL सर्वर में स्ट्रिंग करने के लिए Concat फ़ील्ड मान

  4. तालिका ए से चयन * [कॉलम ए को छोड़कर] का उपयोग कर कॉलम को बाहर निकालें?

  5. SQL सर्वर - लेन-देन त्रुटि पर वापस रोल?