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

SQL中CASE语句如何接收用户输入?SQL Developer执行报错求助

解决ORA-00904: "INPUT": invalid identifier错误

你的问题出在CASE语句里直接使用了input作为判断对象,但input并不是DUAL表的列,也不是已定义的变量——你用的&input是SQL Developer的替换变量,执行时会被替换成你输入的具体值,但input本身没有被识别为有效标识符。

下面是几种可行的修复方案:

方案1:直接在CASE中使用替换变量

把CASE里的input换成&input,让判断逻辑直接引用同一个替换变量:

SELECT 
    &input,
    (CASE &input
         WHEN '1' THEN 'Yes'
         WHEN '2' THEN 'No'
         WHEN '3' THEN 'Maybe'
         ELSE 'Wrong'
     END) Answer
FROM DUAL;

执行时SQL Developer会提示你输入input的值,输入后就能正常返回对应结果。

方案2:先定义变量再引用

用DEFINE提前定义变量,后续直接引用,适合需要重复使用变量的场景:

-- 可以直接在这里赋值,或者执行时会提示输入
DEFINE input = '2';
SELECT 
    &input,
    (CASE &input
         WHEN '1' THEN 'Yes'
         WHEN '2' THEN 'No'
         WHEN '3' THEN 'Maybe'
         ELSE 'Wrong'
     END) Answer
FROM DUAL;

方案3:用子查询封装输入值

把替换变量的值作为列别名,在子查询中定义后,外层查询的CASE可以直接引用这个别名:

SELECT 
    val,
    (CASE val
         WHEN '1' THEN 'Yes'
         WHEN '2' THEN 'No'
         WHEN '3' THEN 'Maybe'
         ELSE 'Wrong'
     END) Answer
FROM (
    SELECT &input AS val FROM DUAL
);

内容的提问来源于stack exchange,提问作者John Joy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:11:26