2012-01-23 19 views
45

मैं temp तालिका की संरचना कैसे प्राप्त करूं और फिर temp तालिका हटाएं। क्या temp टेबल के लिए sp_helptext है? अंत में एक ही सत्र या क्वेरी विंडो में अस्थायी तालिका को हटाना संभव है?

उदाहरण:अस्थायी तालिका की संरचना प्राप्त करें (जैसे एसक्यूएल स्क्रिप्ट उत्पन्न करें) और वर्तमान उदाहरण के लिए स्पष्ट अस्थायी तालिका

select * 
into #myTempTable -- creates a new temp table 
from tMyTable -- some table in your database 

tempdb..sp_help #myTempTable 

Reference

+0

का उपयोग सीटीई यह अस्थायी तालिका स्वचालित रूप से ड्रॉप करने लगता है: https://technet.microsoft.com/en-us/library/ms190766%28v=sql.105%29.aspx?f=255&MSPPError = -2147217396 – RetroCoder

उत्तर

78

आप अस्थायी तालिका नाम के आसपास उद्धरण चिह्नों का उपयोग करने की जरूरत है और आप सीधे drop table ... उपयोग करने के बाद अस्थायी तालिका हटा सकते हैं।

select * 
into #myTempTable -- creates a new temp table 
from tMyTable -- some table in your database 

exec tempdb..sp_help '#myTempTable' 

drop table #myTempTable 
+5

शायद मैं यह जोड़ सकता हूं कि यह समाधान सिस्टम संसाधनों पर थोड़ा अधिक है। यदि केवल टेबल संरचना की आवश्यकता है, तो चयन के अंत में "WHERE 0 = 1" जोड़ें। – pkExec

+0

क्या ऐसा कोई कारण नहीं है कि यह स्पा इतना लंबा लगे? – Sal

9

जब तक मुझे पता है कि टेबल के लिए कोई SP_HelpText नहीं है। इस प्रयास करें:

Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable'); 
3

exec sp_columns table_name;

उदाहरण

exec sp_columns कर्मचारी;

1
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%' 
1

मैं एक स्क्रिप्ट में एक अस्थायी तालिका बनाने में समर्थ होने के लिए आवश्यक है, इसलिए मैं इस कोड CREATE TABLE बयान के स्तंभों हिस्सा उत्पन्न इस्तेमाल किया:

SELECT char(9) + '[' + c.column_name + '] ' + c.data_type 
    + CASE WHEN c.data_type IN ('decimal') 
     THEN isnull('(' + convert(varchar, c.numeric_precision) + ', ' + convert(varchar, c.numeric_scale) + ')', '') 
     ELSE '' END 
    + CASE WHEN c.IS_NULLABLE = 'YES' THEN ' NULL' ELSE '' END 
    + ',' 
From tempdb.INFORMATION_SCHEMA.COLUMNS c 
WHERE TABLE_NAME LIKE '#myTempTable%' 

मैं सभी के लिए परीक्षण नहीं किया एसक्यूएल डेटाटाइप, लेकिन यह int, float, डेटाटाइम, पैसा, और बिट के लिए काम किया।

इसके अलावा - ApexSQL Complete (फ्री) में एक अच्छी सुविधा है जहां आप Insert Into कथन में ग्रिड परिणाम निर्यात कर सकते हैं। मैंने अपनी स्क्रिप्ट में इस बनाई गई टेम्पैप टेबल को लोड करने के लिए इसका इस्तेमाल किया। Sql सर्वर में ApexSQL Copy Results As Insert into statement

संबंधित मुद्दे