open cursor with hold .....
do.
fetch next cursor ....
package size ....
if not sy-subrc is initial.
close cursor ..
exit.
endif.
....
call function 'DB_COMMIT'.
enddo.
Перед запуском делают сброс буферов. В таблице БД 1250000 записей. Программа постоянно выдает разные результаты: то open cursor рулит, то селекты по-переменно...
mike1 объясните пожалуйста какие преимущества дает использование open cursor. Сам никогда эту технологию не использовал.
ЗЫ ну и за компанию вопрос - почему программа так безумствует...
У меня схожая по масштабам бедствия проблема - копирование до сотни миллионов записей.
В приведенном мной коде два ключевых момента with hold и call function 'DB_COMMIT' Для select ... endselect и cursor без hold скорее всего не хватит откатных сегментов бд - периодически необходимо делать commit
Quote:
The following events close a cursor:
The CLOSE CURSOR statement.
The Open SQL statement COMMIT WORK
A database commit in Native SQL. In this case, a cursor opened with WITH HOLD is not closed.
Поэтому вместо COMMIT WORK call function 'DB_COMMIT'
ЗЫ а в консерватории что-то не в порядке или это ритейл?
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Wed Dec 19, 2007 2:50 pm Post subject:
mike1 wrote:
ЗЫ а в консерватории что-то не в порядке или это ритейл?
Если вопрос ко мне - то это документооборот, только в бАльшой конторе. Проблемы выборки не стоит - просто теоретические аспекты хотел уточнить, может когда использовать придется.
в консерватории что-то не в порядке в первую очередь у меня,а потом у топикавтора. А злоупотребляя удержанием курсоров можно получить по шапке от базиса (У меня разовый случай ).
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Thu Dec 20, 2007 10:18 am Post subject:
John Doe wrote:
ЗЫ ну и за компанию вопрос - почему программа так безумствует...
Надо полагать, нагрузка на сервер базы данных неравномерна.
До кучи:
Quote:
The following events close a cursor:
...
- The Open SQL statememnt ROLLBACK WORK
- A database rollback in Native SQL
- A screen change, in particular the statements CALL SCREEN, CALL DIALOG, CALL TRANSACTION, MESSAGE
- A Remote Function Call, in particular the statements CALL FUNCTION ... DESTINATION , CALL FUNCTION ... STARTING NEW TASK, or CALL FUNCTION ... IN BACKGROUND TASK.
If you attempt to open a cursor that has already been opened, you get a runtime error.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.