ORA-00904: "PSTATUSTYPE": 无效的标识符 00904.00000 - "%s: 无效的标识符" *原因:*操作:行错误:67 列:11

ORA-00904: "PSTATUSTYPE": invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause: *Action: Error at Line: 67 Column: 11

当我尝试 运行 以下 SQL:

SELECT  
p_mv.created_by                            createby, 
from  pipeline             p_mv, 
pipeline             p_con, 

route route_s , 

 where  
    "pstatustype"='CTA'
     and
    case when pstatustype='CTA' then p_con.created_date
           when pstatustype='VAD' then route_s.orgn_vsl_arvl_date
           when pstatustype='ETA' then route_s.arrival_date
           else null -- default anyway
      end Between to_date('&1','DD-MON-YYYY:HH24:MI:SS')
              AND to_date('&2','DD-MON-YYYY:HH24:MI:SS');

我收到 psstatustype 列的错误:

ORA-00904: "PSTATUSTYPE": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action: Error at Line: 67 Column: 11

psstatustype 不存在于数据库端。我正在为 where 子句下的案例分发动态创建它。请帮忙!!

此致, 枫子

"it's a parameter."

您发布的 SQL 已损坏,因此这 不是 一个有效的示例(例如,您有一个没有连接条件的交叉连接,因此它将 return 笛卡尔积)。无论如何,它向您展示了您需要做的事情:

SELECT  
     ....
from  pipeline             p_mv, 
      pipeline             p_con, 
      route route_s , 
 where  
    case '&pstatustype'
           when 'CTA' then p_con.created_date
           when 'VAD' then route_s.orgn_vsl_arvl_date
           when 'ETA' then route_s.arrival_date
           else null -- default anyway
      end 
      between to_date('&1','DD-MON-YYYY:HH24:MI:SS')
              AND to_date('&2','DD-MON-YYYY:HH24:MI:SS');

这使用 SQL*Plus 替换变量语法 &pstatustype,每次 运行 查询时都会提示您输入一个值。不同的客户可能需要不同的方式来指定和填充参数。