0

table1とtable2という2つのテーブルがあり、両方のテーブルのすべての列は同じですが、table2にはいくつかのデフォルト値を挿入したい余分な列があり、テーブルの名前は実行時に生成されるため、テーブル名を変更できるため、宣言できませんテーブルのフィールド。

4

2 に答える 2

0

必要なのは動的クエリです。

以下のコードをご覧ください

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
于 2013-02-20T08:30:53.257 に答える
0

あなたの質問に対する答えを書きました。次のリンクで表示できます。

参考までに。ソースと宛先のパラメーターを proc に渡すと、ソースから宛先にデータが自動的に挿入されます。

于 2013-02-20T08:56:11.963 に答える