|
Что происходит при попытке использовать связываемые переменные? И как решить задачу?
|
|||
---|---|---|---|
#18+
Доброго времени суток всем. Весрия СУБД: oracle 10g2 Есть такой запрос: Код: 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. 70.
Выполняется он примерно 15 - 20 мин, и память жрёт гигами. Но работает правильно. Понятное дело, я ОЧЕНЬ хочу использовать связываемые переменные (не подстановочные, они мне никак не помогли). То есть Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Беда, однако: из объявленных переменных видит oracle только первую. Остальные для нее просто не существуют, и она ругается, что они не объявлены. Допустим, не объявлены. Я в SQL Developer даю ей возможность самостоятельно запросить значения переменных. Запрашивает. Но: - если я использовал 1 связываемую переменную, то всё норм, запрос выполнен, и очень быстро. Но мне надо 12 переменных. - если я определяю в тексте запроса более 1 переменной - ОШИБКА ORA-00600 (все параметры пустые - [], [], [], [], [], []), и экземпляр падает. После этого без перезапуска даже не коннектится к нему. То же самое происходит при попытке определить 1 переменную, и с её помощью получить требуемые значения (:jan + :jan, :jan + :jan + :jan, и т. д.). Вот теперь, уважаемые знатоки, вопросы: - как определить и использовать 2 и более связываемых переменных в Oracle? - почему мой экземпляр Oracle не позволяет определить более 1 связываемой переменной? От чего это зависит и можно ли это исправить? Если да, то как именно? - как ускорить выполнение запроса без использования связываемых переменных? Это, наверное, совсем уж глупо, но если не будет другого выхода - надо что - то искать.... Каюк мозгу уже. Не вижу, на что смотреть ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 13:16 |
|
Что происходит при попытке использовать связываемые переменные? И как решить задачу?
|
|||
---|---|---|---|
#18+
velikiyxela, вам вообще не нужны бинды в таком запросе. Погуглите-почитайте про pivot/unpivot. Т.к. у вас старый оракл придется использовать старые способы, например: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 13:36 |
|
Что происходит при попытке использовать связываемые переменные? И как решить задачу?
|
|||
---|---|---|---|
#18+
xtender, какое тебе огромное спасибо! А мне, старому ослу, кол осиновый в голову, чтобы не забывал про простые способы и не пытался решать задачи "в лоб"!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2020, 14:06 |
|
Что происходит при попытке использовать связываемые переменные? И как решить задачу?
|
|||
---|---|---|---|
#18+
velikiyxela, Это все нагромаждение кода вроде можно заменить: Код: plsql 1. 2. 3. 4.
А визуализирвоать .. да хоть case раз уж 10G ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 14:44 |
|
|
start [/forum/topic.php?fid=52&fpage=48&tid=1881354]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 350ms |
total: | 506ms |
0 / 0 |