ORA-01722: неверный номер, но тип данных является датой, и он никоим образом не примет его - PullRequest
0 голосов
/ 03 февраля 2020

еще одна из этих проблем: nummeri c, просто не могу понять.

Мой запрос:

SELECT
    s.user_id,
    date_time, 
    to_char(Date_time, 'DD-MON-YYYY HH24:MI:SS') timestamp,
        ( SELECT DECODE
        FROM (  SELECT  DECODE, code
                FROM    codelist_decode
                WHERE   codelist_id = 5029
                AND language_code = 001
             ) t5
        WHERE  t5.code = s.operation_type) 
    AS operation,
        ( SELECT t1.module_name_internal
        FROM (  SELECT  module_name_internal, module_id
                FROM    aris_admin_module
              ) t1
        WHERE  s.module_id = t1.module_id
        ) 
    AS module,
    t.session_id,
    t.seq_admin_audit_trail,
    t.record_id,
        ( SELECT t4.field_name_e
          FROM (  SELECT  field_name_e, admin_field_id
                  FROM    aris_admin_table_field
                ) t4
          WHERE admin_field_id = t.field_id) 
    AS field_name,
        ( SELECT t2.DECODE
          FROM  (  SELECT  DECODE, code
                   FROM    aris_admin_audit_decode
                   WHERE   field_id = t.field_id
                ) t2
          WHERE  t2.code = to_number(t.old_value)) 
    AS org_value_yn,
    t.old_value,
        ( SELECT t3.DECODE
          FROM ( SELECT  DECODE, code
                 FROM    aris_admin_audit_decode
                 WHERE   field_id = t.field_id
                ) t3
          WHERE t3.code = to_number(t.new_value)) 
    AS new_value_yn
    ,t.new_value
FROM
    system_admin_audit_session   s,
    system_admin_audit_trail     t
WHERE s.session_id = t.session_id
--order by TO_NUMBER('s.session_id','9999999999')
--or order by to_date(s.date_time) 
order by 2

Выше выдается ошибка: ORA- 01722: неверный номер 01722. 00000 - «неверный номер» * Причина: указанный номер был недействительным. * Действие: укажите действительное число.

Я пробовал заказывать в нескольких других столбцах, но та же проблема. Если я упрощаю запрос, он работает нормально:

select s.user_id,s.date_time
from ARISG_PROD.system_admin_audit_session s
order by 2 desc

Так почему же он не распознает мою дату и время и не принимает заказ?

1 Ответ

1 голос
/ 03 февраля 2020

Посмотрим, смогу ли я вам чем-нибудь помочь. Обычно такая ошибка может возникать при сравнении строки с числом.

Так, например, если s.module_id был varchar2, а t1.module_id был определен как число, то подобное утверждение

s.module_id = t1.module_id

может быть причиной root.

Я бы порекомендовал вам закомментировать все подзапросы в главном операторе выбора и попробовать выполнить запрос на наличие ошибки.

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

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