SELECT INTO
создает таблицу с той же схемой, что и таблица в предложении FROM
. Другими словами, как-то так:
select *
into NewTable
from ExistingTable
Это создаст NewTable
с той же структурой и схемой, что и ExistingTable
.
Вы можете сделать:
if @param = 0
begin
select *
into NewTable1
from ExistingTable
end
else
begin
select *
into NewTable2
from ExistingTable
end
Или вы можете сделать это:
declare @newTableName varchar(100)
declare @dynamicSql varchar(1000)
if @param = 0
set @newTableName = 'NewTable1'
else
set @newTableName = 'NewTable2'
set @dynamicSql = 'select * into ' + @newTableName + ' from ExistingTable'
exec(@dynamicSql)
В зависимости от того, сколько вариантов (т. Е. Сколько условных операторов вам нужно), если это два или три, я бы выбрал первый. Если имя новой таблицы является параметром для хранимого процесса, я бы использовал динамический SQL.
ПРИМЕЧАНИЕ : в любом случае новая таблица (имя таблицы, указанное в ... INTO TableName
должна быть несуществующей таблицей, чтобы вы не выдавали ошибку.