SQL सर्वर में, आप Transact-SQL का उपयोग करके अस्थायी तालिकाओं की सूची वापस करने के लिए निम्न में से किसी भी पांच तरीके का उपयोग कर सकते हैं।
ये स्थानीय और वैश्विक दोनों अस्थायी तालिकाओं को लौटाते हैं।
विकल्प 1 - sys.tables
sys.tables
सिस्टम कैटलॉग दृश्य विशेष रूप से तालिका जानकारी वापस करने के लिए डिज़ाइन किया गया है।
SELECT name FROM tempdb.sys.tables WHERE name LIKE '#%';
जैसा कि इस पृष्ठ पर सभी दृश्यों के साथ है, यह देखते हुए कि हम अस्थायी . के बारे में जानकारी चाहते हैं तालिकाओं में, हमें इस दृश्य को tempdb . में क्वेरी करने की आवश्यकता है डेटाबेस। हम इसे पहले उस डेटाबेस पर स्विच करके (ताकि यह हमारा वर्तमान डेटाबेस हो), या डेटाबेस नाम के साथ अपनी क्वेरी को क्वालिफाई करके कर सकते हैं।
इस उदाहरण में, मैं डेटाबेस नाम के साथ क्वेरी को योग्य बनाता हूं।
विकल्प 2 - sys.objects
आप sys.objects
. का भी उपयोग कर सकते हैं सिस्टम कैटलॉग दृश्य। यदि आप यह विकल्प चुनते हैं, तो आपको इसे प्रकार के अनुसार फ़िल्टर करना होगा ताकि केवल उपयोगकर्ता तालिकाएँ वापस आ जाएँ।
SELECT name FROM tempdb.sys.objects WHERE type = 'U';
U
"उपयोगकर्ता तालिका" के लिए खड़ा है। ऐसा करने का एक वैकल्पिक तरीका WHERE type_desc = 'USER_TABLE'
का उपयोग करना है ।
विकल्प 3 - INFORMATION_SCHEMA.TABLES
यदि आप एएनएसआई मानक विकल्प चाहते हैं, तो INFORMATION_SCHEMA.TABLES
का उपयोग करें दृश्य। यदि आप इस विकल्प को चुनते हैं, तो आपको इसे प्रकार के अनुसार फ़िल्टर भी करना होगा ताकि केवल "बेस टेबल" ही वापस आए।
SELECT TABLE_NAME FROM TempDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'Base Table';
विकल्प 4 - sp_tables
यदि आप एक संग्रहित प्रक्रिया विकल्प की तलाश में हैं, तो sp_tables
संग्रहीत प्रक्रिया चाल चलेगी।
USE tempdb; EXEC sp_tables '#%';
आप तर्क नामों को भी स्पष्ट रूप से शामिल कर सकते हैं।
USE tempdb; EXEC sp_tables @table_name = '#%', @table_owner = 'dbo', @table_qualifier = 'tempdb', @table_type = "'TABLE'", @fUsePattern = 1;
आप देखेंगे कि मैंने tempdb . पर स्विच किया है इस प्रक्रिया को निष्पादित करने से पहले, भले ही मैंने डेटाबेस को तर्कों में से एक के रूप में आपूर्ति की हो। यह वास्तव में आवश्यक है। @table_qualifier
तर्क वर्तमान डेटाबेस से मेल खाना चाहिए।
यह भी ध्यान दें कि @fUsePattern
इस मामले में पैटर्न 1 होना चाहिए, क्योंकि मैं टेबल नाम में वाइल्डकार्ड ऑपरेटर का उपयोग कर रहा हूं। इसे 1
पर सेट करना पैटर्न मिलान को सक्षम बनाता है। इसे 0
पर सेट करना पैटर्न मिलान को अक्षम कर देगा।
विकल्प 5 - dbo.sysobjects
यह शायद एक विकल्प नहीं होना चाहिए, लेकिन मैं इसे वैसे भी सूचीबद्ध करूंगा। dbo.sysobjects
दृश्य केवल पश्चगामी संगतता के लिए SQL सर्वर में शामिल है। इसे पदावनति के लिए चिह्नित किया गया है और Microsoft इसका उपयोग न करने की सलाह देता है। यदि आप इसे अपने कोड में पाते हैं, तो शायद इसे पिछले विकल्पों में से किसी एक में बदलने पर विचार करें।
किसी भी मामले में, यह कैसा दिखता है:
SELECT name FROM tempdb..sysobjects WHERE name LIKE '#%';
अगर आप सोच रहे हैं कि डबल डॉट किसके लिए है (..
), यह डिफ़ॉल्ट स्कीमा निर्दिष्ट करने का एक त्वरित तरीका है। इस मामले में, डिफ़ॉल्ट स्कीमा dbo
है , इसलिए हम निम्नलिखित भी लिख सकते हैं:
SELECT name FROM tempdb.dbo.sysobjects WHERE name LIKE '#%';