我可以有一个存储过程来向表中添加新列并处理列后记吗?例如,我有以下存储过程:
...
alter table tb1
add col1 varchar(1) null
insert into tb1(col1)
values ('Y')
我有一个错误说
col1 无效。
我可以有一个存储过程来向表中添加新列并处理列后记吗?例如,我有以下存储过程:
...
alter table tb1
add col1 varchar(1) null
insert into tb1(col1)
values ('Y')
我有一个错误说
col1 无效。
尝试使用默认值“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''')
我是这样做的,那你就不用担心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'