34,576
社区成员
发帖
与我相关
我的任务
分享
use tempdb
if object_id('tempdb..#t1') is not null
drop table #t1;
go
declare @schema as varchar(100),@insert as varchar(100);
set @schema = 'col1 int,col2 int';
set @insert = 'insert into #t1 values(1,10)';
create table #t1(id int);
execute('alter table #t1 add '+@schema+' alter table #t1 drop column id; ')
execute(@insert)
select * from #t1
use tempdb
if object_id('tempdb..#t1') is not null
drop table #t1;
go
declare @schema as varchar(100),@insert as varchar(100);
set @schema = 'col1 int,col2 int';
set @insert = 'insert into #t1 values(1,10)';
create table #t1(id int);
execute('alter table #t1 add '+@schema+' alter table #t1 drop column id; exec('''+@insert+''')');
--execute('alter table #t1 add '+@schema+' alter table #t1 drop column id; '+@insert+';');为什么这么些就不可以呢?说是insert的时候,不知道前面更改的列,还是往之前变更之前的表里插入数据,所以出错