我有,我有嵌入如下动态SQL存储过程:为什么在插入语句工作之后这不会改变?
delete from #temp_table
begin tran
set @sql = 'select * into #temp_table from sometable'
exec (@sql)
commit tran
begin
set @sql = 'alter table #temp_table add column1 float'
exec(@sql)
end
update #temp_table
set column1 = column1*100
select *
into Primary_Table
from #temp_table
然而,我注意到,所有的报表工作,但ALTER没有。当运行该过程时,我收到一条错误消息:“无效的列名称列1”
我在这里做错了什么?
编辑:实现我没有提到,第一次插入是一个动态的SQL以及。更新它。
另一种方法尝试,但会引发同样的错误:
delete from #temp_table
begin tran
set @sql = 'select * into #temp_table from sometable'
exec (@sql)
commit tran
alter table #temp_table add column1 float
update #temp_table set column1 = column1*100
编译器不知道你的动态sql中有什么。另外你的开始/提交转化看起来是多余的和不必要的。您需要插入GO命令(批量分隔符)才能通过编译器,认为没有这样的列。 – pmbAustin
感谢。将删除开始/提交传送 – Bee
您的第一个插入不会插入任何内容 - 没有从子句。它应该像“从some_other_table选择*到#temp_table” – Mike