在存储过程中添加一列

GLP*_*GLP 6 t-sql sql-server stored-procedures alter-table sql-server-2008

我是否可以使用一个存储过程向表中添加新列并在列后面处理列?例如,我有以下存储过程:

...

alter table tb1
add col1 varchar(1) null

insert into tb1(col1)
values ('Y')
Run Code Online (Sandbox Code Playgroud)

我说错了

col1无效.

Lit*_*les 11

尝试使用默认值"Y"创建表,而不是之后插入值.

alter table tb1 add col1 varchar(1) not null DEFAULT ('Y')
Run Code Online (Sandbox Code Playgroud)

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''')
Run Code Online (Sandbox Code Playgroud)