You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在storedprocedure中使用CASE报"Incorrect syntax near the keyword CASE"如何解决

错误原因

SQL 中的 CASE 是表达式,只能用来返回值,不属于流程控制语句,不能直接作为分支结构包裹 SET 语句,这是触发语法错误的核心原因。


修正方案

你可以根据实际场景二选一:

方案1:用 IF ELSE 流程控制分支实现

如果每个分支除了给 @Query 赋值外还有其他逻辑操作,选这个方案:

DECLARE @Query AS VARCHAR(max);
-- 此处保留你原本@Type变量的赋值逻辑

IF @Type = 1
BEGIN
    SET @Query = '' -- 填入Type=1时对应的查询语句
END
ELSE IF @Type = 2
BEGIN
    SET @Query = '' -- 填入Type=2时对应的查询语句
END
ELSE IF @Type = 3
BEGIN
    SET @Query = '' -- 填入Type=3时对应的查询语句
END
ELSE
BEGIN
    SET @Query = '' -- 填入默认场景对应的查询语句
END

方案2:把 CASE 作为赋值表达式使用

如果只是单纯根据@Type的值给@Query赋值,这个方案代码更简洁:

DECLARE @Query AS VARCHAR(max);
-- 此处保留你原本@Type变量的赋值逻辑

SET @Query = CASE 
    WHEN @Type = 1 THEN '' -- 填入Type=1时对应的查询语句
    WHEN @Type = 2 THEN '' -- 填入Type=2时对应的查询语句
    WHEN @Type = 3 THEN '' -- 填入Type=3时对应的查询语句
    ELSE '' -- 填入默认场景对应的查询语句
END

内容的提问来源于stack exchange,提问作者Mark Cosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:18:03