Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Создаю вот такую процедуру: Код: plaintext 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. Я предположил, что если RETURN находится внутри цикла, то и значения будут выводиться каждую итерацию, но при выполнении процедуры я увидел только один результат, предположительно, последний. А как сделать, чтобы выводились все результаты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 09:58 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Павел Гужанов, В конце есть пример на эту тему . В двух словах. Вам надо создать курсор и вернуть его, получите на выходе все записи. Над запросом придётся немножко поколдовать, но это не очень сложно. Ну и два селекта заменить на один. Рекомендую почитать CookBook, там есть примеры как посчитать в одном цикле разные суммы, в Вашем случае можно считать М и Ж в одном запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 10:29 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Исправил процедуру вот так: Код: plaintext 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. Получаю вот такой результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. т.е. опять возвращается только последнее значение. Догадываюсь, что что-то не так сделал с курсором, но что? При объявлении курсора пробовал использовать конструкцию Код: plaintext и Код: plaintext На результате это не отразилось. Что мне сделать, чтобы получить все 100 результатов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:35 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Так вам таблицу нужно вернуть? Или запись? Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:43 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
да, всю таблицу результатов, 100 штук ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:45 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
А в том курсоре, что у вас написан, вы фетчите 100 раз разные записи в структуру, которая у вас является строкой вида (M,F), что вы определили зписью Код: plaintext 1. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:01 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
А вообще такую задачу модно решить и без курсора. Раздел common-table-expression Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:10 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
А как в таком случае мне определить выходной параметр, чтобы в него выгрузить всю таблицу результатов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:10 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
По Фрейду опечатка :) В предыдущем посте модно=можно. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:11 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. В синтаксисе не уверен, проверить нет возможности. И все же настоятельно рекомендую посмотреть в сторону рекурсии. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:18 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
buven Код: plaintext 1. 2. Синтаксис не такой, а вот найти правильный синтаксис не получается.... :о( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:44 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Похоже процедура здесь не может возвращать наборы. И я не уверен, можно ли использовать курсоры в функциях, которые это могут. Поэтому либо временная таблица, либо CTE+функция, если курсоры нельзя использовать в функциях. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 16:39 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Читайте документацию. Процедура может возвращать result set. Последний оператор в процедуре должен быть Open cur1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 16:57 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
buvenПохоже процедура здесь не может возвращать наборы. И я не уверен, можно ли использовать курсоры в функциях, которые это могут. Поэтому либо временная таблица, либо CTE+функция, если курсоры нельзя использовать в функцияхКак раз процедура может возвращать курсоры, а функция - запись или таблицу. Ссылку на возвращающую курсор функцию уже давали, табличные функции - здесь . 2 Павел Гужанов: По поводу SQL PL почитайте DB2 SQL PL Essential Guide . Он, правда, для 9.7 прилично устарел, но для начала - вполне сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 17:06 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Павел Гужанов, Вот тупо набросал, но надо править, главное принцип: Код: plaintext 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. DATEGEN - это "генератор периодов" (стр.365 CookBook V9.1) COUNTERS - конечный результат DISTINCT INSURANCE_NUMBER я не учитывал. вызывал так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 10:52 |
|
||
|
Как сделать, чтобы процедура возращала результат каждую итерацию цикла?
|
|||
|---|---|---|---|
|
#18+
Павел Гужанов, Вот ваш запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=36271910&tid=1603026]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 284ms |

| 0 / 0 |
