एसक्यूएल सर्वर में एक अस्थायी तालिका मौजूद है या नहीं यह निर्धारित करने का सबसे अच्छा तरीका क्या है?

एक टी-एसक्यूएल स्क्रिप्ट लिखते समय जिसे मैं फिर से चलाने की योजना बना रहा हूं, अक्सर बार मैं अस्थायी डेटा संग्रहीत करने के लिए अस्थायी तालिकाओं का उपयोग करता हूं। चूंकि अस्थायी तालिका फ्लाई पर बनाई गई है, इसलिए मैं उस तालिका को केवल तभी छोड़ सकता हूं जब यह मौजूद हो (इससे पहले कि मैं इसे बनाऊं)।

मैं जिस विधि का उपयोग करता हूं उसे पोस्ट करूंगा, लेकिन मैं देखना चाहता हूं कि कोई बेहतर तरीका है या नहीं।

0
जोड़ा संपादित
विचारों: 4

3 उत्तर

IF Object_Id('TempDB..#TempTable') IS NOT NULL
BEGIN
    DROP TABLE #TempTable
END
0
जोड़ा

OBJECT_ID फ़ंक्शन दिए गए ऑब्जेक्ट नाम और प्रकार के लिए आंतरिक ऑब्जेक्ट आईडी देता है। 'tempdb .. # t1' tempdb डेटाबेस में तालिका # t1 को संदर्भित करता है। 'यू' उपयोगकर्ता परिभाषित तालिका के लिए है।

IF OBJECT_ID('tempdb..#t1', 'U') IS NOT NULL
  DROP TABLE #t1

CREATE TABLE #t1
(
  id INT IDENTITY(1,1),
  msg VARCHAR(255)
)
0
जोड़ा
SELECT name
FROM sysobjects
WHERE type = 'U' AND name = 'TempTable'
0
जोड़ा
कीथ, ऐसा लगता है कि उस क्वेरी को सामान्य उपयोगकर्ता टेबल मिलेगा, लेकिन अस्थायी तालिकाओं नहीं।
जोड़ा लेखक Nathan Bedford, स्रोत