我需要向现有表添加一个附加列,然后为现有记录插入适当的列值。我需要在一个存储过程中执行此操作。
到目前为止,我有以下内容(SQL Management studio报告它无法找到新列以便将值添加到现有记录中):
BEGIN
ALTER TABLE tbl1
ADD col_add int
UPDATE tbl1
SET [col_add]='value'
WHERE col_pk = 1
END
我尝试在ALTER和UPDATE语句之间添加“GO”关键字,但之后报告语法错误。
提前致谢。
答案 0 :(得分:2)
我认为你必须提交你的改变表'然后进行更新,不要忘记提交更新:
BEGIN
BEGIN TRAN
ALTER TABLE tbl1
ADD col_add date
COMMIT;
BEGIN TRAN
UPDATE tbl1
SET [col_add]='value'
WHERE col_pk = 1
COMMIT;
END
答案 1 :(得分:2)
解析期间发生表名错误。在SSMS中,go
起作用,因为它将批次分开。但是存储过程始终是一个批处理。
您可以使用exec
或sp_executesql
强制在存储过程中进行新一轮解析:
exec ('UPDATE tbl1 SET [col_add]='value' WHERE col_pk = 1')