Как преобразовать длинные данные в char в Oracle ||ORA-00932: несовместимые типы данных: ожидается, что CHAR получил LONG - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь выполнить приведенный ниже запрос, который выбирает разные данные на основе нескольких критериев.Здесь я использовал оператор like на полях cookie, а поле cookie имеет длинный тип данных.

select * from (
               select to_char(audit_logs.REQUEST_TIME, 'dd/mm/yyyy HH24:mm:ss') as event_time,
                    audit_logs.CLIENT_REQUEST as client_request,
                    audit_logs.RESPONSE_CODE as responsecode,
                    audit_logs.SIZEOFOBJECT as sizeofobject,
                    audit_logs.COOKIES as cookies,
                    audit_logs.ENV as env,
                    audit_logs.USERID as user_id,
                    audit_logs.POST_DATA as post_data,
                    audit_logs.AUTHSCHEME as authscheme,
                    audit_logs.AUTHMARKET as authmarket,
                    audit_logs.X_REQUESTED_WITH as x_requested_with,
                    audit_logs.METHOD_TYPE as method_type,
                    audit_logs.HOSTNAME as hostname,
                    audit_logs.SESSION_COOKIES as session_cookies,
                    audit_logs.X_FORWARDED_FOR as x_forwarded_for,
                    audit_logs.USER_AGENT as user_agent,
                    audit_logs.GEOIP_COUNTRY_CODE as country_code
               from audit_logs
               where
                    REQUEST_TIME >= to_date(:fromdate,'dd/mm/yyyy')
                    and REQUEST_TIME <= to_date(:todate,'dd/mm/yyyy HH24:MI:SS')
                    and COOKIES LIKE '%TANID=%'
               order by REQUEST_TIME DESC)
where ROWNUM <= :recordslimit
order by event_time DESC;

При выполнении вышеуказанного запроса я получаю сообщение об ошибке ниже:

ORA-00932: inconsistent datatypes: expected CHAR got LONG
00932. 00000 -  "inconsistent datatypes: expected %s got %s"

Может кто-нибудь, пожалуйста, как решить эту проблему.

Примечание: Изменение типа данных будетвремя на работу, так как в моей базе данных много данных.

1 Ответ

0 голосов
/ 02 октября 2018

Вы определяете три именованных параметра в запросе - fromdate, todate и recordslimit.Запрос использует to_date для параметров fromdate и todate, поэтому они должны иметь тип данных char.Поэтому, пожалуйста, проверьте, какие фактические типы данных вы используете при передаче фактических значений по этим параметрам.Могут быть и другие уловы, но я думаю только об этом.

...