|
|
|
Вопрос по ошибке ORA-01858
|
|||
|---|---|---|---|
|
#18+
Знающие люди, помогите! Имею следующую функцию: function KADRI.get_pens_sotr1 return KADRI.SOTRUD_TBL1 PIPELINED as begin for cur in (SELECT count(tabnomer) AS schet FROM pol_tbl, sotrud_tbl WHERE ((pol_tbl.sex = sotrud_tbl.link_pol)) and (((months_between (to_char(sysdate,('DD MONTH YYYY')),to_char(DATA_ROGDENIYA,('DD MONTH YYYY'))) )>720 and pol_tbl.sex='м') or ((months_between (to_char(sysdate,('DD MONTH YYYY')),to_char(DATA_ROGDENIYA,('DD MONTH YYYY'))) )>660 and pol_tbl.sex='ж')) ) loop pipe row (KADRI.SOTRUD_OBJ1(cur.schet)); end loop; return; end get_pens_sotr1; ----------------------------------------------------- Запускаю в Toad: select * from table (KADRI.get_pens_sotr1) Все работает нормально. Затем в Delphi создаю запрос при помощи ADOQuery. После запуска выдает программа ошибку ORA-01858: a non-numeric character was found where a numeric was expected ORA-06512: at "KADRI.GET_PENS_SOTR1", line 6 В чем тут дело-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 19:29:47 |
|
||
|
Вопрос по ошибке ORA-01858
|
|||
|---|---|---|---|
|
#18+
HorekВ чем тут дело-то? Быть может в древнем ADO, который не понимает "table()"? Попробуйте создать Код: plsql 1. и скормить его ADO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 20:35:43 |
|
||
|
Вопрос по ошибке ORA-01858
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousБыть может в древнем ADO, который не понимает "table()"? ADO мжет и древний, а вот конструкции типа months_between (to_char(sysdate,('DD MONTH YYYY')),to_char(DATA_ROGDENIYA,('DD MONTH YYYY'))) ) и приводит к этой ситуевине. Товарищь Horek похоже с датами очень на Bы и пал жертвой default NLS_DATE_FORMAT. Horek: Код: 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. Ну и переменную типа record называть cur показывает ты и в курсорах не силен. А pipelined функция возвращающая одну строку это вообще пипец. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 21:19:02 |
|
||
|
Вопрос по ошибке ORA-01858
|
|||
|---|---|---|---|
|
#18+
SY, я и не претендую на звание гуру. Иначе вопросов бы у меня не возникало. Что до pipelined функций-то это единственный способ, который позволил мне вывести результат в приложении, написанном на Delphi. Функции с использованием REF CURSOR "не виделись в упор". Хотя в Toad было все ОК :-( Насколько правильно я использую pipe-это уже другой вопрос. Зато данные хоть выводятся. :-) А вот что неверного в строке months_between (to_char(sysdate,('DD MONTH YYYY')),to_char(DATA_ROGDENIYA,('DD MONTH YYYY'))) ? Если я to_char не использовал, то сразу выдавалась ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 23:11:27 |
|
||
|
Вопрос по ошибке ORA-01858
|
|||
|---|---|---|---|
|
#18+
HorekНасколько правильно я использую pipe-это уже другой вопрос. Зато данные хоть выводятся. :-) А вот что неверного в строке months_between (to_char(sysdate,('DD MONTH YYYY')),to_char(DATA_ROGDENIYA,('DD MONTH YYYY'))) ? Если я to_char не использовал, то сразу выдавалась ошибка Что неправильно? Функция months_between требует две даты. TO_CHAR преобразует дату в сроку, так-что months_between получает две строки и вынужден неяно преобразовывать их обратно в даты исользуя формат пo умолчанию NLS_DATE_FORMAT из NLS_SESSION_PARAMETERS. То еcть результат завист от настоек клиeнта. Если у клиeнта NLS_DATE_FORMAT = 'DD MONTH YYYY' то клиент получит правильный результат а если нет, то в лучшем cлучае получит ошибку (как ты в ADO) а в худшем случае может получить неправильный и незамеченный результат. SY. P.S. Какая ошибка выдавалась без to_char? Приведи запрос и ошибку. Так-же, надеюсь DATA_ROGDENIYA это DATE а не VARCHAR2/CHAR, иначе у тебя ещё и проблемы дизайна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 00:37:26 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1887551]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get first new msg: |
9ms |
get forum data: |
4ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 375ms |

| 0 / 0 |
