使用define时出现ORA-00904错误

时间:2018-03-27 11:19:37

标签: sql oracle

我在define中使用了两个变量的简单select语句:

DEFINE MEMBER_NR = 1503530453; 
DEFINE CARD_TYPE = AA;
SELECT * FROM CARDS y JOIN PEOPLE p
ON p.INDIVIDUAL_ID = y.INDIVIDUAL_ID
WHERE p.NR = &MEMBER_NR
AND y.TYPE = &CARD_TYPE
ORDER BY y.FROMDATE DESC;

不幸的是,在运行此查询时,行上发生了ORA-00904错误

AND y.TYPE = &CARD_TYPE

错误详情:

00904. 00000 -  "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 23 Column: 25

可能是什么原因?我怀疑CARD_TYPE变量的类型不好,但我不太熟悉SQL来解决这个问题。

1 个答案:

答案 0 :(得分:1)

我的例子是基于Scott的架构,因为我没有你的桌子。

这就是你所拥有的(错误):

SQL> define e_ename = 'KING'
SQL>
SQL> select empno, ename, sal
  2  from emp
  3  where ename = &e_ename;
where ename = KING
              *
ERROR at line 3:
ORA-00904: "KING": invalid identifier


SQL>

由于ENAME列是VARCHAR2,您应该将变量括在单引号中:

SQL> select empno, ename, sal
  2  from emp
  3  where ename = '&e_ename';

     EMPNO ENAME             SAL
---------- ---------- ----------
      7839 KING             5000

SQL>

知道了吗?