我是否可以使用一个存储过程向表中添加新列并处理后续列?例如,我有以下存储过程:
...
alter table tb1
add col1 varchar(1) null
insert into tb1(col1)
values ('Y')
我说错误
col1无效。
答案 0 :(得分:11)
尝试使用默认值“Y”创建表,而不是之后插入值。
alter table tb1 add col1 varchar(1) not null DEFAULT ('Y')
根据GO
文档,您需要在两行之间使用GO
来创建表格:
SQL Server实用程序将GO解释为应将当前批处理的Transact-SQL语句发送到SQL Server实例的信号。
但是,您不能在存储过程中使用GO
语句。
编辑
或者,您可以使用EXEC
语句来执行代码:
EXEC ('alter table tb1 add col1 varchar(1) null')
EXEC ('update tb1 set col1 = ''Y''')
答案 1 :(得分:0)
我是这样做的,所以您不必担心SQL注入:
ALTER PROCEDURE Add_DB_Field
(@FieldName varchar(100))
AS
ALTER TABLE Readings ADD tmpCol VARCHAR(100) NULL
EXEC sp_RENAME 'Readings.tmpCol' , @FieldName, 'COLUMN'