sql-server - 如果在存储过程创建中出现问题
问题描述
这不是一个非常复杂的问题,我只是在其他地方发现了同样的错误。
我需要一个存储过程来更新表的“状态”,而不是删除它。
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
但是我在“状态”上收到一个错误,说无效的列名......
解决方案
尝试这个:
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
推荐阅读
- android - 在 Android 7 上实现 androidx 生物识别库后字体缩放不起作用
- php - 防止 Select sql 从 DB PHP 中选择相同的数据
- javascript - 为什么我的 Javascript 回调未定义?
- database - 我有一个作为数据库连接的 CSV 文件,我想在任何地方使用自动化查询来更新列值而不是所有列
- forms - React 钩子表单未在控制台中显示对象 onsubmit
- python - 如何在类型验证之前访问序列化程序的字段数据?
- list - Groovy Map 中同一键的多个值
- linux - 如何在终端解压tensorflow hub模块?
- apache-camel - Windows 上的 Apache Camel 和 Apache FTP 服务器 - 找不到“发件人”目录
- angular - FormGroup addControl 不更新视图中的控件