|
|
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
Добрый день Опять с глупым вопросом Oracle 12 (патчи точно не знаю - система чужая), ошибка повторяется на конкретной схеме, прав менять нет, все делается удаленно через запускателя который вообще не ораклист. Есть вьюха,которая формирует одно из полей как to_date(..., 'MMYYYY') из конкатенации 2х текстовых полей с соответствующим выравниванием. Формирует вроде верно. В user_tab_columns тип поля светится как DATE Пытаюсь сделать запрос вида Код: plsql 1. 2. и получаю ORA-01843: not a valid month При этом вся вьюха спокойно показывается и выфетчивается полностью в разных всяких тулах типа PL/SQL developer или SQL Plus (где дата без ошибок преобразуется), таблица маленькая, около 40К записей. Вьюха спокойно без ошибок обходится таким кодом Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вопрос - может кто сталкивался и что бы это могло быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2019, 20:27 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZЕсть вьюха,которая формирует одно из полей как to_date(..., 'MMYYYY') из конкатенации 2х текстовых полей с соответствующим выравниванием. Формирует вроде верно. В user_tab_columns тип поля светится как DATE Из отсебятины непонятно. Код вьюхи или test case. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2019, 21:23 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
YZ, Я бы на всякий случай начал с Код: plsql 1. 2. или даже Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 01:06 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
dmdmdmИз отсебятины непонятно. Понятно: AserYZошибка повторяется на конкретной схеме, прав менять нет, все делается удаленно через запускателя который вообще не ораклист. .... При этом вся вьюха спокойно показывается и выфетчивается полностью в разных всяких тулах типа PL/SQL developer или SQL Plus (где дата без ошибок преобразуется), таблица маленькая, около 40К записей. AserYZ, разные региональные настройки сессии. Измени запрос для удалённого вызова на такой: Код: plsql 1. 2. или такой: Код: plsql 1. 2. Посмотри результаты и погугли в чём разница (поэкспериментировав с языком, а точнее, посмотрев настройки сессии и базы - это тоже просто находится). Ну и про это: AserYZВьюха спокойно без ошибок обходится таким кодом... Ты уверен, что спокойно и без ошибок? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 01:24 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZВьюха спокойно без ошибок обходится таким кодомНу как, хоть одну ошибку этот "код" детектирует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 07:31 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZ, кроме date_field вюха имеет поля типа to_date? мож слетает не із-за date_field ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 09:38 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
FogelAserYZ, разные региональные настройки сессии. при каких региональных настройках сессии будет слетать to_date('012018', 'MMYYYY')? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 09:42 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZ Формирует вроде верно. проверте "вроде", напр для mm := null; зы 90% даю что формируется неверно ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 09:46 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZ, проверочный код с очепяткой cr.id_field слетать он тоже должен exception when others then dbms_output.put_line('Error detected ID='||cr.id_field); не отработает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. для проверочного я б іспользовал сursor c1 is select текст із в'ю без преобразований to_date, а уже в цикле проверял корректность mmyyyy ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 10:00 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
Коллеги, спасибо за ответы и возможные версии Отвечу сразу по id_field- тут моя опечатка, все-таки приходится перепечатывать вручную да еще и изменять сохраняя логику Изначально курсор содержал id_field. Чтобы убрать все сомнения насчет этого с курсором Код: plsql 1. отрабатывает на ура Код: plsql 1. 2. не отрабатывает, валится с той же ошибкой (ORA-01843), поэтому подозрение пало именно на косяки при проверке во фразе WHERE. Не уверен, что региональные настройки как-то тут влияют, для этого и используется явный формат в to_date, но для очистки совести взял NLS формат из сессии и указал без преобразований - все то же. Всяческие извращения с датой целью вызвать ошибку преобразования типа Код: plsql 1. Код: plsql 1. ошибки не вызывают, фетчатся полностью, хотя по идее, если дата изначально кривая, должны были бы валиться хоть с какой-то ошибкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 12:37 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZфетчатся полностьюУверен? Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 12:49 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
StaxAserYZ, проверочный код с очепяткой cr.id_field слетать он тоже должен exception when others then dbms_output.put_line('Error detected ID='||cr.id_field); не отработает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. для проверочного я б іспользовал сursor c1 is select текст із в'ю без преобразований to_date, а уже в цикле проверял корректность mmyyyy ..... stax так я ж вроде так и сделал. Я взял дату из view без преобразования и потом в цикле сравниваю имитируя поведение WHERE. Сдается в контексте PL/SQL гипотетический баг пофикшен а вот в SQL нет. И отрабатывает, зараза, без ошибок. Пишет только Start и End. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 12:53 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
ElicAserYZфетчатся полностьюУверен? Код: plsql 1. Ошибки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 13:05 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZ, Просто планозависимая херня: ошибка вылезает, когда предикат по to_date просовывается на ранние шаги, до фильтрации записей. Проверьте исходные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 13:30 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZ, может что-то соптимизировал оракля, в поане видны предикаты where можно глянуть Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. я б еще поробовал 1) Код: plsql 1. 2. 2) Код: plsql 1. 2. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 13:34 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZ Сдается в контексте PL/SQL гипотетический баг пофикшен а вот в SQL нет. И отрабатывает, зараза, без ошибок. Пишет только Start и End. попробуйте в SQL условие не константой Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 13:47 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
xtenderAserYZ, Просто планозависимая херня: ошибка вылезает, когда предикат по to_date просовывается на ранние шаги, до фильтрации записей. Проверьте исходные данные.простой пример: простой запрос без предикатов отрабатывает нормально: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. лечится парой хинтов (ну или с помощью rownum): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 14:00 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
xtenderAserYZ, Просто планозависимая херня: ошибка вылезает, когда предикат по to_date просовывается на ранние шаги, до фильтрации записей. Проверьте исходные данные. Это не просто учитывая обстоятельства. Сосредоточимся на этом пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 14:10 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
xtenderAserYZ, Проверьте исходные данные. Данные могут быть и правильными, архитектор так намудрил у меня такое часто с to_number вылазило Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 15:00 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
StaxДанные могут быть и правильнымия и не говорил, что данные "неправильные"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 15:16 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
Рекомендованные хинты исправили ситуацию. Спасибо уважаемому xtender . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 16:52 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
AserYZРекомендованные хинты исправили ситуацию. Спасибо уважаемому xtender . значит есть строки где значение в поле "месяц" not a valid month .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 17:07 |
|
||
|
ORA-01843: not a valid month при запросе из view
|
|||
|---|---|---|---|
|
#18+
xtenderлечится парой хинтов (ну или с помощью rownum): Но возможно за счет производительности. Взависимости от ситуации CASE может быть лучшим решением: Код: plsql 1. 2. 3. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2019, 17:49 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39755906&tid=1882966]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
144ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 450ms |

| 0 / 0 |
