【问题标题】:Alter table add field then error whilst using it更改表添加字段,然后在使用时出错
【发布时间】:2016-12-07 01:41:36
【问题描述】:

我正在尝试向表中添加一个字段。如果我创建表然后调用 sp 并在 sp 中添加字段。我不能在 where 子句中使用该字段

  1. 同时运行第一部分和第二部分:没有错误
  2. 在 sp 中运行第一部分然后第二部分:错误(完成后不要忘记删除 #table)
  3. 运行第一部分然后第二部分:错误(完成后不要忘记删除#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

【问题讨论】:

  • 我正在考虑一个 sp,您可能需要在 ALTERselect 语句之间添加一个 GO 行。
  • 你能解释一下它有什么问题吗 - 似乎对我有用:sqlfiddle.com/#!3/8121d/1
  • 我已经更新了问题(不知道 sql fiddle 存在它的极品!)
  • @JoeMajsterski 刚刚尝试过仍然会出错:(

标签: sql database tsql alter


【解决方案1】:

似乎在代码编译期间抛出了错误。如果您在 exec() 命令中运行 select(或任何其他直接引用新列的查询),它会起作用:

http://sqlfiddle.com/#!3/76b8c/1

【讨论】:

  • 谢谢我最终可能会这样做,但它并不完全整洁,唯一的其他解决方案是选择另一个#table,然后 sp 可以使用 col
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多