我在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来解决这个问题。
答案 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>
知道了吗?