首页 > 解决方案 > 如果在存储过程创建中出现问题

问题描述

这不是一个非常复杂的问题,我只是在其他地方发现了同样的错误。

我需要一个存储过程来更新表的“状态”,而不是删除它。

CREATE PROCEDURE sp_delete_user
    @id INTEGER
AS
    UPDATE USER
    IF (state = 0)
      SET state = 1
    ELSE 
      SET state = 0
    WHERE id = @id
GO

但是,这会引发错误...

我也试过这个:

CREATE PROCEDURE sp_delete_user
    @id INTEGER
AS
    IF state = 1
    BEGIN
        UPDATE user
        SET state = 0
        WHERE id = @id
    END 
    ELSE
    BEGIN
        UPDATE user
        SET state = 1
        WHERE id = @id
    END
GO

但是我在“状态”上收到一个错误,说无效的列名......

标签: sql-serverstored-procedures

解决方案


尝试这个:

CREATE PROCEDURE flip_user_state
   @user_id int
AS
   UPDATE Users
   SET state = CASE WHEN state = 1 THEN 0 ELSE 1 END
   WHERE user_id = @user_id

推荐阅读