किसी क्वेरी के अंत में अस्थायी तालिकाओं को स्वचालित रूप से नहीं छोड़ा जाता है, केवल तभी जब DB से वर्तमान कनेक्शन हटा दिया जाता है या आप उन्हें DROP TABLE #columntable
के साथ स्पष्ट रूप से हटा देते हैं
या तो क्वेरी की शुरुआत में तालिका के अस्तित्व के लिए परीक्षण करें या अंत में इसे हमेशा हटा दें (अधिमानतः दोनों)
संपादित करें:जैसा कि मैट्रिन ने अपनी टिप्पणी में कहा था, यह वास्तव में एक पार्स त्रुटि है। यदि आप केवल SQL को निष्पादित करते समय पार्स करते हैं तो आपको वही त्रुटि मिलती है।
इसका परीक्षण करने के लिए मैंने आपकी क्वेरी को विभाजित किया और कोशिश की:
if exists (select 1 from emp where id = 6)
create table #columntable (newcolumns varchar(100))
GO
if not exists (select 1 from emp where id = 6)
create table #columntable (oldcolumns varchar(100))
GO
इससे पार्सर खुश है। दिलचस्प बात यह है कि यदि आप गैर-अस्थायी तालिकाओं का उपयोग करने के लिए बदलते हैं तो मूल क्वेरी ठीक हो जाती है (मुझे उन समस्याओं का एहसास होता है जो पैदा करेंगे, मुझे यह जानने में दिलचस्पी थी कि क्वेरी पार्स क्यों नहीं होगी)।