如何使用提示用户输入sql中的位置?

时间:2019-03-21 07:24:43

标签: sql oracle

创建一个报告,以显示在特定位置工作的那些员工的部门名称,位置,名称,工作和薪水。提示用户输入位置。

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

1 个答案:

答案 0 :(得分:0)

很可能您的列(D.LOC)是字符串类型。 因此,是否使用

  • '&DEPTNO'引用为替换变量,然后输入20
  • &DEPTNO未引用为替换变量,然后输入'20'

每当出现提示。

编辑:

根据您在下面的评论中共享的数据,您需要将D.LOC的{​​{1}}替换为D.DEPTNO,将WHERE D.LOC = '&DEPTNO'替换为WHERE D.DEPTNO = '&DEPTNO',并因此产生了上述问题collat​​ion( 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';