Получить структуру временной таблицы (например, создать SQL-скрипт) и очистить временную таблицу для текущего экземпляра

Как получить структуру временной таблицы, а затем удалить временную таблицу. Есть ли sp_helptext для временных таблиц? Наконец, можно ли удалить временную таблицу в том же сеансе или окне запроса?

Пример:

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

tempdb..sp_help #myTempTable

ссылка.

5 ответов


вам нужно использовать кавычки вокруг имени временной таблицы, и вы можете удалить временную таблицу сразу после использования 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

пока я знаю, что для таблиц нет SP_HelpText. Попробуйте это:

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

мне нужно было воссоздать временную таблицу в скрипте, поэтому я использовал этот код, генерирующий часть столбцов инструкции 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%' 

Я не тестировал все типы данных sql, но это работало для int, float, datetime, money и bit.

и - ApexSQL Полностью (бесплатно) имеет хорошую функцию, где вы можете экспортировать результаты сетки в Insert Into заявление. Я использовал это, чтобы загрузить эту созданную временную таблицу в мой скрипт. ApexSQL Copy Results As Insert into statement


exec sp_columns table_name;

пример

exec для сотрудников sp_columns;


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