Как использовать подсказку пользователю для расположения в sql? - PullRequest
0 голосов
/ 21 марта 2019

Создайте отчет, который отображает название отдела, местоположение, название, должность и зарплату тех сотрудников, которые работают в определенном месте. Подскажите пользователю местоположение.

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 голосов
/ 21 марта 2019

Скорее всего, ваш столбец (D.LOC) имеет строковый тип.Итак, используйте ли

  • '&DEPTNO' в кавычках в качестве переменной подстановки и введите 20 или
  • &DEPTNO в кавычках в качестве переменной подстановки и введите '20'

при появлении соответствующего запроса.

Редактировать:

В зависимости от данных, которыми вы поделились в комментарии ниже, вам необходимо заменить D.LOC на D.DEPTNOдля WHERE D.LOC = '&DEPTNO', получая WHERE D.DEPTNO = '&DEPTNO', и вышеупомянутая проблема, возникшая из-за этого сопоставления (, то есть сопоставление между строкой двух значений и числовым, 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...