ORA-00904: «МАЙ»: НЕПРАВИЛЬНЫЙ ИДЕНТИФИКАТОР - PullRequest
3 голосов
/ 09 августа 2011
INSERT INTO FCR.TRANSACTION (   
TRX_UNIT,    
TRX_DATE,    
TRX_USR,    
TRX_USR_SN,    
TRANSACTION_CODE,    
PRODUCT_CODE,    
CURRENCY_SHORT_DESCRIPTION,    
AMOUNT_FC,    
EXCHANGE_RATE,    
AMOUNT_DC) 
SELECT    
SOURCE_SYSTEM_CHANNEL_CODE,    
to_char(TRANSACTION_DATE, 'dd/mm/yyyy'),    
USER_CODE,    
USER_TRANSACTION_SERIAL_NUMBER,    
TRANSACTION_CODE,    
PROFITS_PRODUCT_CODE,    
SHORT_DESCRIPTION,    
SOURCE_AMOUNT_FC,    
SOURCE_EXCHANGE_RATE,    
SOURCE_AMOUNT_EUR 
FROM    
FCR_TRANSACTION 
WHERE    
TRANSACTION_DATE = to_char(02-MAY-2006, 'dd/mm/yyyy')

Выше приведен запрос, который я ввожу в ORACLE, но он выдает ошибку ORA-00904: «МОЖЕТ»: НЕВЕРНЫЙ ИДЕНТИФИКАТОР Может ли кто-нибудь помочь мне с этим, пожалуйста. Спасибо

Ответы [ 5 ]

6 голосов
/ 09 августа 2011

Если TRANSACTION_DATE - это дата (и я искренне надеюсь, что это так), вам нужно использовать TO_DATE для преобразования строки в DATE.И поскольку это строка, она должна быть в кавычках, потому что это то, что мы делаем с литералами.

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

Итак, строка должна быть:

TRANSACTION_DATE = to_date('02-MAY-2006', 'dd-mon-yyyy')
5 голосов
/ 09 августа 2011

Вы должны добавить кавычки около 02 мая 2006 года, в противном случае это выглядит как арифметическое выражение.

4 голосов
/ 09 августа 2011
TRANSACTION_DATE = to_char('02-MAY-2006', 'dd/mm/yyyy')

Поместите его в кавычки, иначе он будет интерпретирован как идентификатор, а не как литерал.

2 голосов
/ 09 августа 2011

если вы должны использовать строку

Для переформатирования вы должны сначала преобразовать ее в дату, а затем в желаемый формат, например:

TRANSACTION_DATE = TO_CHAR(TO_DATE('02-MAY-2006'),'dd/mm/yyyy')

, просто пытаясь переформатировать ее какдд / мм / гггг не будет работать

0 голосов
/ 15 апреля 2015

Используйте WHERE TRANSACTION_DATE = to_date('02-MAY-2006', 'dd-MON-yyyy') вместо WHERE TRANSACTION_DATE = to_char(02-MAY-2006, 'dd/mm/yyyy')

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