Получить структуру таблицы temp (например, сгенерировать sql script) и очистить таблицу temp для текущего экземпляра
Как получить структуру таблицы temp, а затем удалить временную таблицу. Есть ли sp_helptext для временных таблиц? Наконец, можно ли удалить временную таблицу в том же окне сеанса или запроса?
Пример:
select *
into #myTempTable -- creates a new temp table
from tMyTable -- some table in your database
tempdb..sp_help #myTempTable
Ссылка.
Ответы
Ответ 1
Вам нужно использовать кавычки вокруг имени таблицы temp, и вы можете удалить временную таблицу непосредственно после использования 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
Ответ 2
Пока я знаю, для таблиц нет SP_HelpText.
Попробуйте следующее:
Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');
Ответ 3
Мне нужно было иметь возможность воссоздать временную таблицу в скрипте, поэтому я использовал этот код для генерации части столбцов оператора 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]()
Ответ 4
exec sp_columns имя_таблицы;
Пример
exec sp_columns сотрудники;
Ответ 5
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'
Ответ 6
Итак, это помогло мне. Он создал столбцы таблицы.
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
)
Это решило бы мою проблему, но мне не хватило времени