【问题标题】:Alter Table and Update column in single stored procedure?在单个存储过程中更改表和更新列?
【发布时间】:2018-12-28 18:40:12
【问题描述】:

我正在尝试创建一个存储过程,该过程添加一个新列,然后将该列设置为一个值:

CREATE PROCEDURE alter_then_update 
AS 
    ALTER TABLE table_1 
        ADD bundle_type NVARCHAR(10);

    UPDATE table_1 
    SET bundle_type = 'Small'

我不断收到错误消息,提示我的列名 bundle_type 无效。我知道该列尚未创建。我不能将它存储在存储过程中并让代码逐行执行吗?分号不是按顺序执行的吗?我尝试使用GO,但查询开始执行。

如何将这两个语句放在一个过程中?

【问题讨论】:

  • 您可以添加具有默认约束值“Small”的列,而不是 UPDATE,指定 WITH VALUES

标签: sql sql-server stored-procedures


【解决方案1】:

问题是程序在执行之前编译。我认为在存储过程中解决这个问题的唯一方法是动态 SQL:

CREATE PROCEDURE alter_then_update AS 
BEGIN
    ALTER TABLE table_1 ADD bundle_type NVARCHAR(10);

    EXEC sp_executesql 'UPDATE table_1 SET bundle_type = ''Small''';
END;

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多