Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Всех с прошедшими праздниками. В хранимой процедуре создаю курсор, что- то вроде Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 06:43 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Надо открыть курсор с возможностью "листать". По умолчанию курсор открывается только на последовательное чтение. Далее, можно будет спозиционировать курсор в конец списка и получить номер последней записи. После этого вернуться назад и начать обычный цикл последовательного чтения записей. Можно сделать ваш запрос как часть сложного запроса. Подсчитать количество записей в подзапросе и выдать это число как самостоятельную колонку в сложном запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 09:07 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
gals, можно подробнее про листать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 09:10 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
OlegA67Добрый день. Всех с прошедшими праздниками. В хранимой процедуре создаю курсор, что- то вроде Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 10:00 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, скажите GET DIAGNOSTICS срабатывает на open cursor? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 12:16 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
я призадумался... Вы хотите использовать так сказать "голый" набор статических команд. Я, лет 5-6 назад, писал на С, используя CLI. Cursor positioning rules for SQLFetchScroll() (CLI) Ныне пишу на Java: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 12:36 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
TORTMark Barinstein, скажите GET DIAGNOSTICS срабатывает на open cursor?В данном случае (select from data-change-table-reference) - да. Насколько я знаю, в процедурах создаются только non-scrollable курсоры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 14:04 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
А как вам моя вторая идея: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 17:56 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinGET DIAGNOSTICS rcnt = ROW_COUNT; Почему то у меня всегда rcnt = 0, хотя кол-во записей в курсоре больше нуля. С чем это может быть связано. Версия DB2 8.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 13:13 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Я так понял, что GET DIAGNOSTICS rcnt = ROW_COUNT; отрабатывает только на операторах INSERT, UPDATE, DELETE. А как мне тогда подсчитать, кол-во записей в курсоре на оператор SELECT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 13:33 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
OlegA67Я так понял, что GET DIAGNOSTICS rcnt = ROW_COUNT; отрабатывает только на операторах INSERT, UPDATE, DELETE. А как мне тогда подсчитать, кол-во записей в курсоре на оператор SELECT Насколько я понимаю, потому Марк и привёл пример, который делает вставку во временную таблицу, т.е. в его примере ROW_COUNT вернет действительное кол-во записей в запросе. gals также приводит пример, но его использование зависит от функционала, который Вы закладываете в процедуру. Поскольку получить кол-во записей Вы сможете только после первого FETCH. Согласно описанию команды GET DISGNOSTICS, она возвращает кол-во обработанных записей в операторах INSERT, UPDATE, DELETE, а в случае PREPARE предполагаемое кол-во записей, что Вы уже навернякка прочитали здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 16:11 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
OlegA67Почему то у меня всегда rcnt = 0, хотя кол-во записей в курсоре больше нуля. С чем это может быть связано. Версия DB2 8.2Я пробовал это на v9.1. Вполне вероятно, что на v8 оно по-другому работает, т.к. дока на этот счет ничего конкретного не говорит. Разбейте 'select * from final table...' на 2 операции: 1. insert в темповую таблицу 1.1. get diagnostics 2. select из темповой таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 17:02 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Разбейте 'select * from final table...' на 2 операции: 1. insert в темповую таблицу 1.1. get diagnostics 2. select из темповой таблицы Упростил задачу, оставил только insert, и стал анализировать Код: plaintext Vladimir Kiselev получить кол-во записей Вы сможете только после первого FETCH Если идти по пути предложенному gals, то после одного FETCH, кол-во записей возвращаемое курсором, будет на одну запись меньше. Как я понял возможности, вернуться на начало курсора нет. Что бы пользователь получил весь курсор, надо повторно его открыть. Получается что запрос будет выполняться два раза, тогда не имеет смыла в этом сложном запросе. Вечный вопрос что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2008, 09:03 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Прям меня заинтриговали :) Да, как Марк и говорил, на моей 9.1.3 тоже всё работает прекрасно. К сожалению восьмерки нет под рукой, проверить не могу, к тому же мы с семерки на 9 перешли сразу. Вот такой тестовый скрипт получился: Код: 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2008, 12:35 |
|
||
|
Кол-во строк в курсоре.
|
|||
|---|---|---|---|
|
#18+
Спасибо Mark Barinstein и Vladimir Kiselev за участие в моей проблеме . Но на 8 версии у меня так и не удалось получить такой же результат как в скрипте у Vladimir Kiselev, может руки кривые :о)). Зато после долгих мучений получилось, сделать так, как посоветовал Mark Barinstein с разбивкой на два этапа INSERT и SELECT. После INSERT во временную таблицу строка Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2008, 13:58 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=35062641&tid=1604101]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 418ms |

| 0 / 0 |
