Ошибка запроса SELECT ORA-01722 (неверный номер) - PullRequest
0 голосов
/ 26 июня 2019

Я сталкиваюсь с этим сообщением об ошибке с моим запросом и не могу понять его. Кто-нибудь может взглянуть на мой запрос и поделиться своими идеями? Большое спасибо

База данных Oracle

SELECT BB_BB60.USERS.FIRSTNAME, BB_BB60.USERS.LASTNAME, 
       BB_BB60.USERS.STUDENT_ID AS IDNUMBER, BB_BB60.USERS.USER_ID AS USERNAME,
       REPLACE(CRSADMIN.OCCURRENCE.CODE, '/','_') AS DESCRIPTION, 
       'Moodle_2019' AS PASSWORD, 
       SUBSTR(BB_BB60.COURSE_MAIN.COURSE_ID, 0, 7) AS DEPARTMENT 
  FROM (CRSADMIN.OCCURRENCE 
        INNER JOIN CRSADMIN.REQ_OCC ON CRSADMIN.OCCURRENCE.PK = CRSADMIN.REQ_OCC.OCC_PK1) 
        INNER JOIN ((BB_BB60.COURSE_USERS INNER JOIN BB_BB60.COURSE_MAIN ON BB_BB60.COURSE_USERS.CRSMAIN_PK1 = BB_BB60.COURSE_MAIN.PK1) 
        INNER JOIN BB_BB60.USERS ON BB_BB60.COURSE_USERS.USERS_PK1 = BB_BB60.USERS.PK1) ON CRSADMIN.REQ_OCC.REQ_PK1 = BB_BB60.COURSE_MAIN.PK1 
 WHERE (((BB_BB60.COURSE_MAIN.COURSE_ID) = 'PARA602_2019_02'));

1 Ответ

0 голосов
/ 26 июня 2019

Вероятная проблема связана с вашей моделью данных.По крайней мере в одном из ваших критериев JOIN вы присоединяете числовой столбец к столбцу varchar2, что приводит к неявному приведению к числу.Тем не менее, ваш столбец varchar2 содержит строки, которые не являются числовыми, поэтому объединение отбрасывает ORA-01722.

Не зная ваших структур таблиц, мы не можем определить проблемные столбцы, поэтому вам нужно выяснить это для себя.

Одним из решений будет преобразование числового столбца в строку, например

 on t1.vcol_pk = to_char(t2.ncol_pk)

. Это может повлиять на производительность (оптимизатор не будет использовать индекс для t2.ncol_pk).

Лучшим решением было бы исправить модель данных, чтобы вам не нужно было сравнивать строки и числа, а также очищать ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...