|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
Коллеги, приветствую. Есть вопрос. У меня есть анонимный блок (прикладываю ниже), далее он будет преобразован в процедуру внутри пакета. Нужно результат этого запроса куда-либо сохранять, с учётом того, что количество столбцов, возвращаемых запросом, может меняться (т.е. количество столбцов в p_pivot1 и p_pivot2 может меняться). Есть вариант в процедуре прописать create table example as далее её дропать и делать так каждое выполнение процедуры, но хочется попробовать более лаконичный вариант есть ли возможность создать коллекцию с вариативным количеством столбцов, т.е. сформировать её на основании это динамического запроса? (честно говоря в плане коллекций слабо подкован, материалы читал, но по своему вопросу ничего не нашел). Далее хочу джоинить эту коллекцию к другой табле. Спасибо. declare p_sql clob default null; p_pivot1 clob default null; p_pivot2 clob default null; begin select listagg(xxx ||' '||REGEXP_REPLACE(zzz, '\s+', '_'), ', ') within group (order by xxx) list_for_pivot2 into p_pivot1 from tabl1 where cpd_id not in (3,4); select listagg(xxx ||' '||REGEXP_REPLACE(zzz, '\s+', '_'), ', ') within group (order by xxx) list_for_pivot1 into p_pivot2 from tabl2 where enabled = 1; p_sql := ' insert into test_pivot select * from ( with actual_rates as ( select t.* from ( select * from com_prop cp join com_m cm on cm.id = cp.id and cm.enabled = 1 where 1=1 and cp.enabled = 1 ) pivot ( max(value) for type in ( '|| p_pivot1 ||' ) ) t where t.id = 6 and t.type = 1 and t.status = 1 ) select * from ( select * from actual_rates ar join values cbv on ar.id = cbv.id and cbv.enabled = 1 join properties cmp on cmp.profile = cbv.id and cmp.enabled = 1 ) pivot ( max(cbp_value) for cbp_type_id in ( '|| p_pivot2 ||' ) ) )'; execute immediate p_sql; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 20:25 |
|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
Rus23 Коллеги, приветствую. Есть вопрос. У меня есть анонимный блок (прикладываю ниже), далее он будет преобразован в процедуру внутри пакета. Нужно результат этого запроса куда-либо сохранять, с учётом того, что количество столбцов, возвращаемых запросом, может меняться (т.е. количество столбцов в p_pivot1 и p_pivot2 может меняться). Есть вариант в процедуре прописать create table example as далее её дропать и делать так каждое выполнение процедуры, но хочется попробовать более лаконичный вариант есть ли возможность создать коллекцию с вариативным количеством столбцов, т.е. сформировать её на основании это динамического запроса? (честно говоря в плане коллекций слабо подкован, материалы читал, но по своему вопросу ничего не нашел). Далее хочу джоинить эту коллекцию к другой табле. Спасибо. Код: 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
Для оформления кода используйте, пожалуйста, тэг SRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 22:02 |
|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
Если вот так в лоб решать, то DBMS_SQL. Вроде такого: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:09 |
|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
Rus23Далее хочу джоинить эту коллекцию к другой табле. И как же ты будешь джоинить эту коллекцию не зная число полей? Смотри в сторону SQL MACRO и/или polymorphic function если версия позволяет. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:21 |
|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
На "чистых" коллекциях есть вариант запилить на базе anydata/anydataset, но стоит ли овчинка выделки... Также возможно генерировать XML или JSON с последующим выходом на join xmltable/json_table ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:58 |
|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
andrey_anonymous Также возможно генерировать XML или JSON с последующим выходом на join xmltable/json_table IMHO мисье знает толко в практологии и ремонте двигателей автомобилей через выхлопную трубу ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 15:12 |
|
создание коллекции на основании динамического sql
|
|||
---|---|---|---|
#18+
Rus23 Далее хочу джоинить эту коллекцию к другой табле. сразу (до пивот) джоинить не судьба? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 15:34 |
|
|
start [/forum/topic.php?fid=52&msg=40112843&tid=1879746]: |
0ms |
get settings: |
26ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
274ms |
get tp. blocked users: |
2ms |
others: | 369ms |
total: | 755ms |
0 / 0 |