|
|
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>Dimitry Sibiryakov, сегодня, 14:46 [20015806] >Завершением транзакции или сессии в зависимости от её (таблицы) типа. Вариант по предложенному тексту может быть выполнен несколько раз в сессии. 1. В локальной сети не один пользователь 2. Конструкция open cur_viborka for SELECT * FROM tbl_tmp_gis похоже вызывает AUTOCOMMIT, вариант ON COMMIT DELETE ROWS не проходит 3. Вариант ON COMMIT PRESERVE ROWS требует очистки после после open cur_viborka, так как априори неизвестно, будут ли еще обращения 4. После закрытия коннекта на компьютере пользователя Oracle сессия не закрывается. С уважением, Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 17:41 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисееввариант ON COMMIT DELETE ROWS не проходит у тебя ни один вариант "не проходит", так что, домыслы про коммиты не имеют оснований. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 09:07 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеевПосле закрытия коннекта на компьютере пользователя Oracle сессия не закрывается.Это какой-то новый, ещё не известный науке ископаемый вид Oracle-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 09:29 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
изтвоисеевВМоисееввариант ON COMMIT DELETE ROWS не проходит у тебя ни один вариант "не проходит", так что, домыслы про коммиты не имеют оснований.Ну, если у него действительно в средстве доступа включен AUTOCOMMIT, по после выполнения PL/SQL блока, где заполняется временная таблица и открывается курсор по ней, выполнится COMMIT, временная таблица очистится и попытка выборки из открытого по ней курсора огребет ORA-08103 На мой взгляд, AUTOCOMMIT -- зло (по крайней мере, в Oracle), но в том же JDBC он включен по-дефолту, и его надо отключать явно Но ТС молчит в каком окружении он работает, даже версию назвать не в состоянии. Выдает только свои догадки, матчасть изучать не хочет и, в общем, уныл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 09:57 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
возможно, у ТС автокоммит в транкейте времянки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 12:24 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
TRUNCATE сам по себе коммит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 12:33 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>Elic, сегодня, 09:29 [20017424] >Это какой-то новый, ещё не известный науке ископаемый вид Oracle-а. Нет, всё определено - на тестовой системе стоят: 1. Серверная часть, на виртуальной машине Windows Server 2003 x32 EE SP2 R2 и Oracle 8i 1.7 2. Часть разработчика, - на виртуальной машине Windows 10 x64, Oracle instantclient-basic-win64-10.2.0.5, Devart dotConnect for Oracle Express (dcoraclefree(9)) 3. Реализация доступа к Oracle -у: Код: c# 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 12:44 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>Вячеслав Любомудров, сегодня, 09:57 [20017452] >Но ТС молчит в каком окружении он работает, даже версию назвать не в состоянии. Относительно тестовой системы - в предыдущем сообщении. Относительно системы объекта - живу в Редкино, боевая система в другом городе. Просто так попасть туда нельзя. Система сдана, идет сопровождение. Менять системные настройки работающего комплекса без уважительных на то причин сисадмин не даст. Моя задача стоит несколько особняком в комплексе, построенном на PL/SQL с использованием PL/SQL-картриджа и применением языка JavaScript. Вопрос по приведенному тексту. Есть две группы команд: -- execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; -- DELETE FROM tbl_tmp_gis; -- COMMIT; Так как приведено в тексте - работает. Если снять комментарии с --D... и --COMMIT во второй группе - работает. Но не понятно, что будет с ресурсами временной таблицей. В инете много пишут как создать временную таблицу, как записать туда данные, но нет информации как аккуратно очистить временную таблицу ON COMMIT PRESERVE ROWS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 13:07 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеев>Вячеслав Любомудров, сегодня, 09:57 [20017452] >Но ТС молчит в каком окружении он работает, даже версию назвать не в состоянии. Относительно тестовой системы - в предыдущем сообщении. Относительно системы объекта - живу в Редкино, боевая система в другом городе. Просто так попасть туда нельзя. Система сдана, идет сопровождение. Менять системные настройки работающего комплекса без уважительных на то причин сисадмин не даст. Моя задача стоит несколько особняком в комплексе, построенном на PL/SQL с использованием PL/SQL-картриджа и применением языка JavaScript.Странно, что ты не разрабатываешь на Oracle 12c, ну или хотя бы 11g Это сейчас в тренде Понять что между 8 (8.0) и 8i (8.1) очень большая разница, ты, видимо, не хочешь ВМоисеевВопрос по приведенному тексту. Есть две группы команд: -- execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; -- DELETE FROM tbl_tmp_gis; -- COMMIT; Так как приведено в тексте - работает. Если снять комментарии с --D... и --COMMIT во второй группе - работает. Но не понятно, что будет с ресурсами временной таблицей. В инете много пишут как создать временную таблицу, как записать туда данные, но нет информации как аккуратно очистить временную таблицу ON COMMIT PRESERVE ROWSДаже временная таблица подчиняется обычным правилам -- на открытый курсор обычный DML (DELETE), даже после COMMIT продолжает действовать правило версионника -- достанем данные из UNDO на момент открытия курсора. Но после TRUNCATE (или COMMIT в ON COMMIT DELETE ROWS) сегмент уже не торт -- грубо говоря, того сегмента просто нет. Ты можешь оттянуть агонию, задав сортировку или вытащив первую строку, но это именно то, за что надо отрывать руки, ибо ошибка стрельнет в самый непредсказуемый момент. Зачем здесь вообще временная таблица -- непонятно, но если все остальное намного тормознее -- то и используй временную таблицу правильно. Если ON COMMIT DELETE ROWS -- никаких AUTOCOMMIT, если PRESERVE ROWS -- TRUNCATE перед заполнением, но не забывай, что это DDL, и как следствие COMMIT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 15:29 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>Вячеслав Любомудров, сегодня, 15:29 [20017978] >... Зачем здесь вообще временная таблица -- непонятно... Мои грубые замеры скорострельности цикла по курсору (текст в посте) показывают его преимущество (6 сек против 12 сек с аналитической функцией). Итак, пусть имеем Oracle 8i 1.7 (тестовая система) и вариант цикла. После выполнения open cur_viborka for SELECT * FROM tbl_tmp_gis; данные уходят на клиента. А что с tbl_tmp_gis? Таблица не пуста. Будет ли еще одно обращение и execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; неизвесно. Клиент в рамках сессии может заниматься другими работами. Ресурсы tbl_tmp_gis в подвешенном состоянии. DELETE tbl_tmp_gis; COMMIT; удаляет информацию строк, но не место занимаемое ими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 21:24 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>Dimitry Sibiryakov, 15 дек 16, 19:35 [20009007] >Нет, я имел ввиду функцию FIRST_VALUE. Как аккуратно написать этот запрос: Код: 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. С уважением, Владимир p.s. можно ли убрать ORDER BY из WHERE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 00:29 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеев, Документации по 8i под рукой нет, но предположу, что конструкция вида Код: plsql 1. там рабоает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 10:58 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеевможно ли убрать ORDER BY из WHERE Overkill ©SY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 10:59 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>env, сегодня, 10:59 [20030823] Ничего не понял. Изучаю язык Oracle 8i 1.7. Требуется найти решение стандартной задачи на мах/мин. Разбиваем множество отсортированных строк выборки на группы и из каждой группы берем первую строку, получаем результирующую выборку. Например на LINQ решение почти аналогичной задачи можно записать так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Dimitry Sibiryakov (15 дек 16, 19:35 [20009007]) предложил применить FIRST_VALUE. Меня интересует, как выглядит решение. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 19:37 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>ВМоисеев, вчера, 00:29 [20029904] Прибавление. Такой вариант по скорострельности эквивалентен циклу по курсору Код: 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. Коллеги, подскажите, где можно улучшить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 00:14 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеевулучшить.критерии лучшести каковы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 07:26 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеев, Возникают сильные сомнения в работоспособности приведённого варианта. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Неужто это работает на 8i? Или это обычная магия данных вроде Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 09:58 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
ВМоисеев, И выберите уже какой-то один язык именования объектов. А то глазам больно смотреть на этот пиджин инглиш getProebyvanie, mesto, dateizm и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 10:03 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>env, сегодня, 10:03 [20035272] >И выберите уже какой-то один язык именования объектов... База данных создана не мною, это есть данность. Как прикладник, чаще всего использую русскую терминологию, благо Microsoft не ограничивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:54 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
>env, сегодня, 09:58 [20035250] >Неужто это работает на 8i? Извините за текстовую ошибку. Правильно (рабочее) так: Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 13:59 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
Elic, а конструкции KEEP FIRST/LAST уже были в 8i? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 14:01 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
envElic, а конструкции KEEP FIRST/LAST уже были в 8i?RTFM Aggregate Functions (8.1.7) (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 14:25 |
|
||
|
Oracle 8i, курсоры и временная таблица
|
|||
|---|---|---|---|
|
#18+
Elic, Спасибо, Виталий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2016, 15:21 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39373043&tid=1886767]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 422ms |

| 0 / 0 |
