日期:2014-05-18  浏览次数:20721 次

sql语句动态添加列
CREATE   TABLE   #doc_exa   (   column_a   INT)  

ALTER   TABLE   #doc_exa   ADD   column_b   VARCHAR(20)   NULL

insert   into   #doc_exa(column_b)
values( 'df ')

但是,弹出错误,说列名column_b无效


但是   select   *   from   #doc_exa,可以显示
column_a,column_b

------解决方案--------------------
CREATE TABLE #doc_exa ( column_a INT)

ALTER TABLE #doc_exa ADD column_b VARCHAR(20) NULL
go

insert into #doc_exa(column_b)
values( 'df ')

------解决方案--------------------
CREATE TABLE #doc_exa ( column_a INT)

ALTER TABLE #doc_exa ADD column_b VARCHAR(20) NULL
go --用GO先把它提交了

insert into #doc_exa(column_b)
values( 'df ')
------解决方案--------------------
楼上正解,,,,

PS:又用错马甲了?^*^
------解决方案--------------------
--或者通过EXEC解决

CREATE TABLE #doc_exa ( column_a INT)

ALTER TABLE #doc_exa ADD column_b VARCHAR(20) NULL

exec ( 'insert into #doc_exa(column_b) values( ' 'df ' ') ')

------解决方案--------------------
楼上成了小楼的楼上,,,
------解决方案--------------------
用 GO 的时候必须注意

GO 之前的变量,到生命周期到 GO 结束:

declare @i varchar(10)
set @i = 'abc '
print @i
go

print @i
/*
服务器: 消息 137,级别 15,状态 2,行 2
必须声明变量 '@i '。
*/
------解决方案--------------------
我在2005里直接运行了一下楼主的代码,没有问题。

--
CREATE TABLE #doc_exa ( column_a INT)

ALTER TABLE #doc_exa ADD column_b VARCHAR(20) NULL;--加个“;”号,不用“GO”应该也可以

insert into #doc_exa(column_b)
values( 'df ')
------解决方案--------------------
在2000里面。要用exec执行
才可以,可能是bug吧