|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Все знают как добавить колонку к резалтсету, благодаря нотации t.* новые колонки легко добавляются слева или справа. Такое действие, иногда вынужденное в случае аналитических функций, меняют %ROWTYPE запроса, и пока я не нашел способ удалять произвольную колонку, из резалтсета, приходилось выписывать все алиасы под копирку и надеяться что чужой rowtype не будет часто обновляться. Для обновляемых резалтсетов есть ещё трюк через rownum, который мне показали на этом форуме. На 12 ещё вроде можно сделать финт со скрытыми колонками, которые не включены в t.*, но мне не актуально. А вот дальше удаления произвольной названной колонки я не продвинулся. Было бы круто научиться переставлять две произвольные колонки известные по имени, не прибегая к динамическому sql. Поменять местами первые две легко. Полезность таких умений сомнительна, поэтому на правах головоломки для уважаемых виртуозов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 23:13 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Перечитал дважды, нифига не понял. Что пытаетесь сделать и что не получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 18:22 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Очевидно, он пытается использовать результат запроса со звёздочкой к неизвестным таблицам в PL/SQL и у него вполне предсказуемо ничего не получается из-за неизвестного количества и порядка полей в резалт-сете. Но поступить как разумные люди и не использовать звёздочку он не хочет, поэтому спрашивает совета у опытных проктостоматологов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 18:33 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
andrey_anonymous Перечитал дважды, нифига не понял. Что пытаетесь сделать и что не получается? Головоломка: поменять местами колонки "empno" и "mgr" в резалтсете который, в котором неизвестен полный список столбцов, не прибегая к динамическому SQL. Известно что эти две колонки точно присутствуют, и типы этих двух колонок совпадают. Я такую головоломку пока не умею решать силами SQL, умею только удалить колонку(-и) из резалтсета. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 02:42 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Очевидно, он пытается использовать результат запроса со звёздочкой к неизвестным таблицам в PL/SQL и у него вполне предсказуемо ничего не получается из-за неизвестного количества и порядка полей в резалт-сете. Но поступить как разумные люди и не использовать звёздочку он не хочет, поэтому спрашивает совета у опытных проктостоматологов. PL/SQL не упоминался, но мне не совсем понятно что у вас не получилось. Напишите код, попробуем вместе. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 02:44 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Я уж не помню когда мне в последний раз мешала лишняя колонка, придумал вот такой пример: Известно, что подавляющему большинству системных объектов возвращаемых из SYS.???_OBJECTS присвоен уникальный порядковый номер объекта, object_id. Пронаблюдав, как у новых объектов этот ключ обычно растет, можно предположить что там какой нибудь счетчик (напр, сиквенс) который выдает возрастающие натуральные числа. Гипотезы требуют проверки. Отсортируем все объекты схемы по дате создания, и посмотрим бывает ли чтобы у более позднего объекта случился меньший object_id: Код: plsql 1. 2. 3. 4. 5. 6.
У меня получилось 33. Т.е. если доверять дате создания объекта в системной вьюхе USER_OBJECTS, счетчик объектов не всегда возрастает монотонно со временем. Хотелось бы на некоторые из них посмотреть в формате USER_OBJECTS%ROWTYPE. Нам повезло: USER_OBJECTS есть PK, задача решается через джойн по уникальному значению. Код: plsql 1. 2. 3.
А если уникального значения нет, и первоначальный резалт сет не является "row-preserving", то приходится сначала добавлять колонку для фильтрации, а потом ее удалять: Код: plsql 1. 2. 3. 4. 5. 6.
Ну или было еще предложение набивать ручками все поля чужого резалтсета, а потом зорко следить чтоб как только поменяется, сразу тоже у себя поменять. Чё, и текста много, и гарантия занятости. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 03:49 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
НеофитSQLPL/SQL не упоминался Упоминался %ROWTYPE, который существует только в нём. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 12:54 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov НеофитSQLPL/SQL не упоминался Упоминался %ROWTYPE, который существует только в нём. Придирка наверное резонная. Я использовал слова "такой же %ROWTYPE" чтобы донести до читателя что целью является предохранение или восстановление количества, порядка, типов и наименований колонок. Как вам нравится "чтоб union и intersect работал между первоначальным резалтсетом, и преобразованным"? Больше слов чем "одинаковый %ROWTYPE", зато не использует PL/SQL терминологию, которая вводит в заблуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 19:11 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
Научился переставлять в произвольном порядке левые или правые N колонок произвольного резалтсета, но с колонками в середине резалтсета пока напряг. Не уверен, что это под силу SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 19:28 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
НеофитSQL чтоб union и intersect работал между первоначальным резалтсетом, и преобразованным Смысла в этом извращении не увидел, но можно сделать unpivot и дальше работать с key-value структурой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 09:56 |
|
Перестановка колонок
|
|||
---|---|---|---|
#18+
env НеофитSQL чтоб union и intersect работал между первоначальным резалтсетом, и преобразованным Смысла в этом извращении не увидел, но можно сделать unpivot и дальше работать с key-value структурой. Я тоже вначале так подумал, но: - unpivot требует перечисления всех столбцов. - нужно чтобы типы столбцов совпадали. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 13:54 |
|
|
start [/forum/topic.php?fid=52&msg=40070655&tid=1880191]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 248ms |
total: | 505ms |
0 / 0 |