|
|
|
Как обернуть курсор в цикл
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Пробую реализовать при помощи курсоров такую задачу: 1. Выбрать строку с max(Поле1) и строку с предшествующим максимальному значению Поля1 из одной и той же таблицы. 2. Затем произвести между ними арифметические операции 3. Результат записать в новую строку это же самой таблицы. 4. Поле1 у этой новой строки примет значение max(Поле1)+10. 5. Следующая интерация – снова берутся две строки этой же таблицы, но теперь максимальной будет та, что только что рассчитали, а предшествующая – та, что в предыдущей интерации была максимальной. Операции выполняются, пока пока значение «Поле1» не превысит заданного числа. Написала процедуру, которая находит строку с max(Поле1), предшествующую, высчитывает данные для третьей строки и добавляет ее в таблицу. CREATE OR REPLACE PROCEDURE insert_for_incl IS cur SYS_REFCURSOR; BEGIN INSERT INTO table (поле1, поле2,…) WITH a1 AS (SELECT строка с max(Поле1) … ), a2 AS (SELECT строка предшествующая max(Поле1) …) SELECT рассчитываю в селекте данные для инсерта новой макс. строки FROM a1, a2 COMMIT; END; Подскажите, пожалуйста: 1. как обернуть эти курсоры в цикл, чтобы анализировать вновь и вновь добавленные максимальные значения и проводить дальнейший расчет? 2. В каком месте и как определить параметр для выхода из этого цикла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 02:56 |
|
||
|
Как обернуть курсор в цикл
|
|||
|---|---|---|---|
|
#18+
Nika31Здравствуйте. Подскажите, пожалуйста: 1. как обернуть эти курсоры в цикл, чтобы анализировать вновь и вновь добавленные максимальные значения и проводить дальнейший расчет? 2. В каком месте и как определить параметр для выхода из этого цикла? зачем Вам ета морка с "курсорами"? Код: 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 10:29 |
|
||
|
Как обернуть курсор в цикл
|
|||
|---|---|---|---|
|
#18+
Nika31Подскажите, пожалуйста: 1. как обернуть эти курсоры в цикл, чтобы ... Почитать можно тут: Cursors Если уж заморачиваться с курсорами, то для "оборачивания в цикл" imho Explicit Cursors Поддержу stax.. -- для Вашей задачи это избыточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 14:40 |
|
||
|
Как обернуть курсор в цикл
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39493987&tid=1885533]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 479ms |

| 0 / 0 |
