|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Уважаемые коллеги, добрый день. Помогите понять как использовать временную таблицу по типу Privat в PL/SQL с курсорами. Есть курсор. Стоит задача после открытия блока begin - наполнить её данными и потом вызвать курсор где она соединяется с другими таблицами. В MANAGEMENT STUDIO всё просто. В ORACLE говорит что таблица не создана. Дело не доходит даже до открытия курсора. Также пробовал через execute immediate. Не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 07:21 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Не проще использовать nested-коллекцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 11:16 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
=nomad=, Может и проще, но у меня на данный момент нет понимания как это сделать даже примерно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 11:32 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
1) какая структура "временной таблицы" 2) версия oracle? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 11:42 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Stax, Эм вот GTT (id_ask number, p_6 varchar2(15), p_9 date, p_11 varchar2(20)) Oracle 19 Структуру курсора нужна ?? В курсоре много join с другими таблицами, а это времянка для расчетов ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 11:47 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Структуру курсора нужна ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 12:13 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Структуру курсора нужна ?? нет в оракле (в старых версиях, в новейших мож и добавили) несколько другой подход к темп таблицам их надо заранее создавать create ..., на что нужны права если создавать в процедуре, то вся дальнейшая работа через динамический скл что часто не очень удобно Вам можно/надо создать global (private) temporary table и дальше работать с ней как с обычной таблицей или создать sql обьект create type тмп as table of ... и дальше работать как "nested-коллекцию" зы есть еще вариант создавать в пакет е type тмп is table of ... оракля сам создаст sql тип, но лично мне не нравится такой подход pss создать ф-цию, возвращающую нужный тмп набор ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 12:30 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Stax juratorneo Структуру курсора нужна ?? нет в оракле (в старых версиях, в новейших мож и добавили) несколько другой подход к темп таблицам их надо заранее создавать create ..., на что нужны права если создавать в процедуре, то вся дальнейшая работа через динамический скл что часто (мне) не очень удобно Вам можно/надо создать global (private) temporary table и дальше работать с ней как с обычной таблицей или создать sql обьект create type тмп as table of ... и дальше работать как "nested-коллекцию" зы есть еще вариант создавать в пакет е type тмп is table of ... оракля сам создаст sql тип, но лично мне не нравится такой подход pss создать ф-цию, возвращающую нужный тмп набор ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 12:32 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Stax juratorneo Структуру курсора нужна ?? нет в оракле (в старых версиях, в новейших мож и добавили) несколько другой подход к темп таблицам их надо заранее создавать create ..., на что нужны права если создавать в процедуре, то вся дальнейшая работа через динамический скл что часто не очень удобно Вам можно/надо создать global (private) temporary table и дальше работать с ней как с обычной таблицей ..... stax Именно так я и сделал и все прекрасно работает. Но мне этот вариант не устраивает впринципе. Не хочу плодить лишние таблицы даже если они пустые. И забивать ими tempDB. Другое дело таблица в оперативной памяти на время сессии или транзакции после чего уничтожается. А что там на счет коллекций?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 12:54 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Другое дело таблица в оперативной памяти на время сессии или транзакции после чего уничтожается. А что там на счет коллекций?? так имхо Private Temporary Tables (PTT) какраз в ОП, и уничтожается с коллекцией нужен пример? ps еще один изврат, формировать хмл и from xml_table() ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 13:22 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Stax juratorneo Другое дело таблица в оперативной памяти на время сессии или транзакции после чего уничтожается. А что там на счет коллекций?? так имхо Private Temporary Tables (PTT) какраз в ОП, и уничтожается с коллекцией нужен пример? ps еще один изврат, формировать хмл и from xml_table() ..... stax Так я ж и говорю что хотел провернуть с таблицами по типу PRIVATE, но с курсором это не работает. Пришлось перейти на GLOBAL. Но с GLOBAL вариант не импонирует по нескольким причинам. ) Пример с коллекцией очень нужен особенно как его подружить с курсорами. В курсор данные подгружаются из одного источника, а для времянки из другого источника где происходит расчет и потом должно как то попадать к данным в курсор ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 13:29 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 13:45 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Пример с коллекцией очень нужен особенно как его подружить с курсорами. В курсор данные подгружаются из одного источника, а для времянки из другого источника где происходит расчет и потом должно как то попадать к данным в курсор https://oracle-base.com/articles/12c/using-the-table-operator-with-locally-defined-types-in-plsql-12cr1 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 13:49 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Не хочу плодить лишние таблицы даже если они пустые. И забивать ими tempDB. Другое дело таблица в оперативной памяти на время сессии или транзакции после чего уничтожается. На всякий случай уточню, что данные в GTT как раз и хранятся на время сессии (или даже до коммита, смотря как создадите). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 14:10 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
PuM256 juratorneo Не хочу плодить лишние таблицы даже если они пустые. И забивать ими tempDB. Другое дело таблица в оперативной памяти на время сессии или транзакции после чего уничтожается. На всякий случай уточню, что данные в GTT как раз и хранятся на время сессии (или даже до коммита, смотря как создадите). У ТС по ходу немеряно оперативки, но нет места под temp tablespace :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 14:18 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Есть курсор. Стоит задача после открытия блока begin - наполнить её данными и потом вызвать курсор где она соединяется с другими таблицами. В MANAGEMENT STUDIO всё просто. В ORACLE говорит что таблица не создана. Дело не доходит даже до открытия курсора. Также пробовал через execute immediate. Не получается. Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 15:02 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
andrey_anonymous juratorneo Пример с коллекцией очень нужен особенно как его подружить с курсорами. В курсор данные подгружаются из одного источника, а для времянки из другого источника где происходит расчет и потом должно как то попадать к данным в курсор https://oracle-base.com/articles/12c/using-the-table-operator-with-locally-defined-types-in-plsql-12cr1 Сколько не пытался я не понимаю что это такое. Ну не понимаю!! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 15:59 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Ну не понимаю!! Ну даже не знаю, что и посоветовать. Разве что нанять специалиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:02 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
PuM256 juratorneo Не хочу плодить лишние таблицы даже если они пустые. И забивать ими tempDB. Другое дело таблица в оперативной памяти на время сессии или транзакции после чего уничтожается. На всякий случай уточню, что данные в GTT как раз и хранятся на время сессии (или даже до коммита, смотря как создадите). Полностью согласен. Разница лишь в том, что PRIVAT создаётся в оперативной памяти с теми же delete или preserve. Но GLOBAL создаётся в temporary tablespace и хранит там свои данные. Далее очищается, только вот после этого HWM уже не мдвинешь потому вто выделенные сегменты её сдвинули и tablespace со временем может расти и потом потребует обслуживания. С PRIVAT всё гораздо лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:02 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
SY juratorneo Есть курсор. Стоит задача после открытия блока begin - наполнить её данными и потом вызвать курсор где она соединяется с другими таблицами. В MANAGEMENT STUDIO всё просто. В ORACLE говорит что таблица не создана. Дело не доходит даже до открытия курсора. Также пробовал через execute immediate. Не получается. Код: 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.
SY. Как все просто через интерфейс)). Только вот в приложение это не запихнуть. Между begin и end. Потому что на этот момент времянка не создана и курсор скажет что такой таблице не существует. В этом то и гемор. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:07 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
Stax juratorneo, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
..... stax Благодарю за помощь. Попытаюсь осмыслить и интерпретировать на своё негодование) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:11 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Полностью согласен. Разница лишь в том, что PRIVAT создаётся в оперативной памяти с теми же delete или preserve. Но GLOBAL создаётся в temporary tablespace и хранит там свои данные. Далее очищается, только вот после этого HWM уже не мдвинешь потому вто выделенные сегменты её сдвинули и tablespace со временем может расти и потом потребует обслуживания. Мда... Может, все-таки стоит немного подтянуть тему HWM в temp-сегменте? juratorneo С PRIVAT всё гораздо лучше. Ну да, ну да. ORA-4030 - гораздо лучше, чем пользовать инструменты по предназначению. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:11 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Полностью согласен. Разница лишь в том как быть с реконнектом? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:12 |
|
Privat Temporary table in PL/SQL WITH Cursor
|
|||
---|---|---|---|
#18+
juratorneo Сколько не пытался я не понимаю что это такое. Ну не понимаю!! что конкретно не понимаете (какую строку в коде)? фича ето, что для пакетов sql типы создаются автоматом, обычно ДБА от них в восторге (SYS_PLSQL_хххххх_ччч_ф) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:22 |
|
|
start [/forum/topic.php?fid=52&msg=40115315&tid=1879697]: |
0ms |
get settings: |
26ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
506ms |
get tp. blocked users: |
3ms |
others: | 298ms |
total: | 929ms |
0 / 0 |