|
Передача параметров в CHAIN (dbms_scheduler)
|
|||
---|---|---|---|
#18+
Уважаемое сообщество, Столкнулся с некоторым непониманием как работать с цепочками в шедулере. Если кратко, то есть таблица в которой хранятся записи с pl/sql кодом, которые нужно запускать и потом отписываться о результатах записи. Сказали реализовать через пакет dbms_scheduler, но столкнулся с проблемой, что не знаю как передать значения переменных в цепочку. Например: есть такие объекты: Код: plsql 1. 2. 3.
и такая структура: Код: 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.
Так вот, при запуске одного значения, все норм: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Но при цикле происходит безобразие: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: plsql 1. 2. 3. 4. 5.
Предполагаю, что цикл очень быстро пробегает, и все поставленные задачи в шедулер выполняются исключительно со значением параметров полученным в последней итерации. А мне нужно чтобы для каждой итерации, был свой поток выполнения цепочки. Что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 17:09 |
|
Передача параметров в CHAIN (dbms_scheduler)
|
|||
---|---|---|---|
#18+
Azket, dbms_scheduler.run_chain выполняется асинхронно, посему либо дай имя job'у в dbms_scheduler.run_chain и проверяй dba_scheduler_running_jobs / dba_scheduler_job_log либо создай job с job_type => 'CHAIN' и используй dbms_scheduler.run_job (по умолчанию job выполнится синхронно в текущей сессии). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 17:43 |
|
Передача параметров в CHAIN (dbms_scheduler)
|
|||
---|---|---|---|
#18+
SY, Я может не так понял, но с такой доработкой ничего не поменялось: Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 18:43 |
|
Передача параметров в CHAIN (dbms_scheduler)
|
|||
---|---|---|---|
#18+
Azket, use_current_session => FALSE запускает job асинхронно, а надо синхронно. Хотя, только сейчас вспомнил что chain синхронно нельзя (steps запускаются согласно rules, т.е. в одной сессии в общем случае никак). Посему только что-то типа: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 19:27 |
|
Передача параметров в CHAIN (dbms_scheduler)
|
|||
---|---|---|---|
#18+
SY т.е. в одной сессии в общем случае никак) SY. Блин, ну почему так, вроде dbms_scheduler такое мощное средство, да еще и CHAIN прикольный механизм, а по сути все это никак не может в многопоточность. По итогу сделал примерно так: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 18:43 |
|
|
start [/forum/topic.php?fid=52&msg=39982360&tid=1881047]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 335ms |
total: | 454ms |
0 / 0 |