创建后直接更改列值(在单个存储过程中)

时间:2013-04-26 12:15:59

标签: sql

我需要向现有表添加一个附加列,然后为现有记录插入适当的列值。我需要在一个存储过程中执行此操作。

到目前为止,我有以下内容(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”关键字,但之后报告语法错误。

提前致谢。

2 个答案:

答案 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起作用,因为它将批次分开。但是存储过程始终是一个批处理。

您可以使用execsp_executesql强制在存储过程中进行新一轮解析:

exec ('UPDATE tbl1 SET [col_add]='value' WHERE col_pk = 1')