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

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

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

tempdb..sp_help #myTempTable

Ссылка .

Ответы [ 6 ]

102 голосов
/ 24 января 2012

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

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

Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');
8 голосов
/ 21 февраля 2018

Мне нужно было иметь возможность воссоздать временную таблицу в скрипте, поэтому я использовал этот код для генерации части столбцов оператора 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 Complete (бесплатно) имеет приятную функцию, позволяющую экспортировать результаты сетки в оператор Insert Into. Я использовал это, чтобы загрузить эту созданную временную таблицу в моем скрипте. ApexSQL Copy Results As Insert into statement

3 голосов
/ 16 сентября 2013

exec sp_columns table_name;

пример

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

2 голосов
/ 30 мая 2016
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'
0 голосов
/ 19 апреля 2019

Итак, это помогло мне. Он создал столбцы таблицы.

Select Column_Name + ' [' + DATA_TYPE + ']' + 
case when Data_Type in ('numeric', 'varchar', 'char')
    then '(' +
        case
            when DATA_TYPE = 'numeric' then CAST(numeric_precision as varchar(3)) + ',' + CAST(numeric_scale as varchar(3))
            when DATA_TYPE = 'varchar' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
            when DATA_TYPE = 'char' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
        end
         + ')'
    else ''
end
+ ','
, * 
From tempdb.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE '#MEHTEMPTABLE%'

Все, что мне тогда нужно было сделать, это скопировать эти элементы в декларацию таблицы

Declare @MyTable Table
(
--All columns here
)

Это решило бы мою проблему, но мне не хватило времени

...