В T-SQL я могу создать табличную переменную, используя синтаксис, такой как
DECLARE @table AS TABLE (id INT, col VARCHAR(20))
На данный момент, если я хочу создать точную копию реальной таблицы в базе данных, я делаю что-то вроде этого
SELECT *
FROM INFOMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MY_TABLE_NAME'
, чтобы проверить тип данных столбца, а также максимальную длину и начать создавать переменную @table
, поочередно называя переменную, тип данных и max_length, что не очень эффективно.Могу ли я узнать, есть ли какой-нибудь более простой способ сделать это, например,
DECLARE @table AS TABLE = SOME_REAL_TABLE_IN_DATABASE
Кроме того, есть ли способ получить имя столбца, тип данных и максимальную длину столбца и использовать его непосредственно в объявлении, как
DECLARE @table AS TABLE (@col1_specs)
Заранее спасибо.
РЕДАКТИРОВАТЬ: Спасибо за ответы и комментарии, мы можем сделать это для @table_variable
, но только в динамическом SQL, и это не хорошо для удобства сопровождения.Однако мы можем сделать это, используя #temp_table
.
Основываясь на ответе Ezlo, мы можем сделать что-то вроде этого:
SELECT TABLE.* INTO #TEMP_TABLE FROM TABLE
Для получения дополнительной информации, пожалуйста, обратитесь к этому ответу .
Разница между временной таблицей и табличной переменной (stackoverflow)
Разница между временной таблицей и табличной переменной (dba.stackexchange)