tsql - IF...ELSE 子句的语法不正确
问题描述
我有一个非常简单的查询,例如:
BEGIN TRY
BEGIN TRAN;
DECLARE @CurrentPassword VARCHAR(255) = (SELECT TOP 1 [Password]
FROM Employee
WHERE @EmpGuid = EmpGuid)
IF (@Password = @CurrentPassword)
UPDATE [Employee]
SET [Password] = @NewPassword
WHERE @EmpGuid = EmpGuid
SELECT 1;
ELSE
SELECT 2;
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
但我真的不知道为什么在我的else
条款中我得到
'ELSE' 附近的语法不正确
我究竟做错了什么?问候
解决方案
你想在 之后有多个语句IF
,你必须使用一个BEGIN .... END
块 - 像这样:
BEGIN TRY
BEGIN TRAN;
DECLARE @CurrentPassword VARCHAR(255) = (SELECT TOP 1 [Password]
FROM Employee
WHERE @EmpGuid = EmpGuid)
IF (@Password = @CurrentPassword)
BEGIN --- you need a *BEGIN* here!!!
UPDATE [Employee]
SET [Password] = @NewPassword
WHERE @EmpGuid = EmpGuid
SELECT 1;
END --- and the *END* for your new *BEGIN*
ELSE
SELECT 2;
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
推荐阅读
- python - Jupyter Notebook:从本地模块和未定义的外部模块导入功能
- reporting-services - 我正在尝试在 JOIN 语句中使用功能性 IIF 语句
- npm - 请求安装私有 gemfury 包时出现 403
- teradata - 使用 Teradata TPT Export 强制对输出文件进行编码
- reactjs - 作为纯客户端应用程序构建和运行 React SSR 应用程序
- r - 将字符串列值转换为数值并在 R 中的这些数值中找到最大值
- node.js - 如何打断对话流中的音乐
- f# - F# Akkling 无法通过分片代理发送消息
- javascript - 如何根据状态变量渲染屏幕?
- python - 如何改善这种线性拟合(考虑误差线)以使其更加稳健?