我正在尝试添加一个字段到表。如果我创建一个表,然后调用一个sp并在sp中添加字段,我不能在where子句
中使用该字段- 同时运行第一部分和第二部分:没有错误
- 运行第一部分,然后在sp: error中运行第二部分(完成时不要忘记删除#table)
- 运行第一部分,然后第二部分:错误(完成时不要忘记删除#table)
的例子:
/*PART 1*/
select 1 as number
into #table
union all
select 2 as number
/*******/
/*PART 2*/
ALTER TABLE #table ADD rowNo INT IDENTITY(1,1);
select * from #table
where rowNo between 0 and 10
drop table #table
/********/
我的意思是在存储过程中运行(sql fiddle的新功能):
http://sqlfiddle.com/!3/545ff/1
似乎错误是在代码编译期间抛出的。如果在exec()命令中运行select(或直接引用新列的任何其他查询),它可以工作:
http://sqlfiddle.com/!3/76b8c/1