Вы можете динамически построить инструкцию SQL во время выполнения, выполнив запрос к словарю данных, например:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Your_Table'
Вы можете использовать это для динамической сборки оператора SQL, чтобы выполнить эту вставку, и он будетстолбцы в нем.
Вы можете выполнить вышеописанное в процедуре T-SQL
и использовать sp_executesql
для запуска динамически созданного запроса.Например, если ваш запрос был в переменной с именем @SQL
, вы могли бы сделать:
EXECUTE sp_executesql @SQL
Пример этого приведен ниже:
create table three (id int identity, other int)
create table four (id int identity, other int)
insert into three select 1
insert into three select 2
declare @sql nvarchar(max)
set @sql = REPLACE(
'
set identity_insert four on
insert into four (:columns:) select :columns: from three
set identity_insert four off',
':columns:',
stuff((
select ','+quotename(name)
from sys.columns
where object_id=object_id('four')-- and is_identity=0
for xml path('')),1,1,''))
EXECUTE sp_executesql @SQL