Sql server 在不声明表字段的情况下,将数据从一个表插入到另一个表名genrated runtime

Sql server 在不声明表字段的情况下,将数据从一个表插入到另一个表名genrated runtime,sql-server,Sql Server,我有两个表,即table1和table2,两个表中的所有列都相同,但table2有一些额外的列,我想在其中插入一些默认值,表名在运行时生成,因此可以更改表名,所以我不能声明表的字段。您需要的是动态查询 请看下面的代码 create table #temp1(id int, prodName varchar(max)) insert into #temp1 values(1,'a') insert into #temp1 values(2,'b') insert into #temp1 valu

我有两个表,即table1和table2,两个表中的所有列都相同,但table2有一些额外的列,我想在其中插入一些默认值,表名在运行时生成,因此可以更改表名,所以我不能声明表的字段。

您需要的是动态查询

请看下面的代码

create table #temp1(id int, prodName varchar(max))

insert into #temp1 values(1,'a')
insert into #temp1 values(2,'b')
insert into #temp1 values(3,'c')
insert into #temp1 values(4,'d')


declare @TableName varchar(20)
set @TableName='NewTable';
declare @QueryCreateTable varchar(max);

set @QueryCreateTable = 
'create table ' + @TableName + ' (id int, prodName varchar(max), defaultCol int DEFAULT 0) 
insert into ' + @TableName + ' (id,prodName)
(
select * from #temp1
)
select * from ' + @TableName;


exec (@QueryCreateTable);

drop table #temp1

我已经书面回答了你的问题。您可以在以下窗口中查看


仅供参考。如果将源和目标的参数传递给proc,它将自动将数据从源插入到目标。

太好了…您尝试了什么?如果您只需要默认字段值,请尝试查找默认约束。您的问题非常不清楚。您是否在询问如何创建具有动态名称的表?还是使用动态列?或者如何设置表上的默认值?或者动态生成
INSERT
查询?还是别的什么?您是想在TSQL本身中还是从一些应用程序代码中实现这一点?请给出更精确的解释,并显示一些代码可能会非常有用。thanx saksham,但这不会是工作表都存在于数据库中,表名是生成运行时,即如果第一个时间表名是表1和表2,下一个时间表可以是表3和表4,具有不同的字段