创建一个报告,以显示在特定位置工作的那些员工的部门名称,位置,名称,工作和薪水。提示用户输入位置。
SELECT E.EMPNO,
E.SAL,
D.DEPTNO,
D.DNAME,
D.LOC
FROM EMP E,
DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND D.LOC = & DEPTNO;
Enter value for deptno: 20
old 3: DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.LOC = & DEPTNO
new 3: DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.LOC = 20
DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.LOC = 20
*
ERROR at line 3:
ORA-01722: invalid number
答案 0 :(得分:0)
很可能您的列(D.LOC
)是字符串类型。
因此,是否使用
'&DEPTNO'
引用为替换变量,然后输入20
或&DEPTNO
未引用为替换变量,然后输入'20'
每当出现提示。
编辑:
根据您在下面的评论中共享的数据,您需要将D.LOC
的{{1}}替换为D.DEPTNO
,将WHERE D.LOC = '&DEPTNO'
替换为WHERE D.DEPTNO = '&DEPTNO'
,并因此产生了上述问题collation( ie,即两个值字符串与数字之间的排序规则,LOC与DEPTNO分别),并获得如下查询:
SELECT E.EMPNO,
E.SAL,
D.DEPTNO,
D.DNAME,
D.LOC
FROM EMP E
JOIN DEPT D ON D.DEPTNO = E.DEPTNO
WHERE D.DEPTNO = '&DEPTNO';