powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / nested table sort
15 сообщений из 15, страница 1 из 1
nested table sort
    #39622746
in17011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
drop type var_tbl;
/
drop table nested_table;
/
create type var_tbl is table of varchar2(10);
/
CREATE TABLE nested_table (col1 var_tbl)
       NESTED TABLE col1 STORE AS col1_tab;
/
insert into nested_table (col1) values (var_tbl('a', 'b', 'c', 'd'));
commit;
/
select b.column_value from nested_table a inner join table (col1) b on 1=1
order by b.nested_table_id desc;

1 d
2 c
3 b
4 a

/
declare
v var_tbl := var_tbl();
begin
select b.column_value bulk collect into v
from nested_table a inner join table (col1) b on 1=1;
order by b.nested_table_id desc;
dbms_output.put_line(v(1));
end;

ORA-00904: "B"."NESTED_TABLE_ID": invalid identifier


Можно ли в анонимном блоке отсортировать аналогично запросу?
...
Рейтинг: 0 / 0
nested table sort
    #39622750
in17011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
v var_tbl := var_tbl();
begin
select b.column_value bulk collect into v
from nested_table a inner join table (col1) b on 1=1
order by b.nested_table_id desc;
dbms_output.put_line(v(1));
end;


Лишняя ; была, убрал.
...
Рейтинг: 0 / 0
nested table sort
    #39622817
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
in17011,
нет практики с вложенными таблицами
не понимаю order by b.nested_table_id desc;

nested_table_id он шо разный для каждой "ВЛОЖЕННОЙ" строки ?
.....
stax
...
Рейтинг: 0 / 0
nested table sort
    #39622855
in17011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
Действительно, один и тот же.
А почему тогда сорт работает?
И можно ли всё-таки в pl/sql иметь контроль над порядком элементов из nested table column?
...
Рейтинг: 0 / 0
nested table sort
    #39622883
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
varray
...
Рейтинг: 0 / 0
nested table sort
    #39622887
in17011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
brzl,
А если размер не знаю?
...
Рейтинг: 0 / 0
nested table sort
    #39622904
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
in17011 контроль над порядком элементов из nested table column?NT по определению является неупорядоченной, как и обычная таблица.
...
Рейтинг: 0 / 0
nested table sort
    #39623000
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
in17011А почему тогда сорт работает?


тоже інтересно, случайность или фича?

.....
stax
...
Рейтинг: 0 / 0
nested table sort
    #39623160
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
delete table (select  col1 id from nested_table )c
 where c.column_value = 'c'  
 /

insert into table (select  col1 id from nested_table ) values ('c');
commit;
/ 
select b.column_value from nested_table a inner join table (col1) b on 1=1
order by b.nested_table_id desc
;
/
COLUMN_VALUE
------------
c           
d           
b           
a 
...
Рейтинг: 0 / 0
nested table sort
    #39623170
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
brzl,

п*нул в лужу..
...
Рейтинг: 0 / 0
nested table sort
    #39623319
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brzl,

"отсортировало правильно", с добавлен последним

.....
stax
...
Рейтинг: 0 / 0
nested table sort
    #39623515
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxbrzl,

"отсортировало правильно", с добавлен последним

.....
staxПобочность эффекта легко видна в плане.
И при добавлении хинта сортировка более не наблюдается.
Код: plsql
1.
2.
3.
4.
5.
6.
select --+ full(a) full(b)
 b.column_value
  from nested_table a
 inner join table(col1) b
    on 1 = 1
 order by b.nested_table_id desc;


Ну это 11-я, версия, а на 12-й ее нет изначально.

Можно дальше играться с побочными эффектами
Код: plsql
1.
2.
3.
4.
select b.column_value
  from nested_table a
 cross apply (select rownum rn, column_value from table(col1)) b
 order by b.rn desc;



Но как уже было сказано
A nested table is an unordered set of data elements, all of the same data type.Так что никакой гарантии "порядка" нет.

[offtop]
Вон в Impala
[array is a] complex data type that can represent an arbitrary number of ordered elements.Так там специально есть ITEM (аналог column_value in Oracle) and POS Pseudocolumns, ибо порядок гарантируется.
[/offtop]
...
Рейтинг: 0 / 0
nested table sort
    #39623596
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для varray порядок отражает sys_nc_array_index, но доступно оно только в ddl, а вместе с nested_table_id образуют глобально уникальный ключ.
...
Рейтинг: 0 / 0
nested table sort
    #39623729
in17011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,
Спасибо за разъяснение.
...
Рейтинг: 0 / 0
nested table sort
    #39624061
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

помню для древних версий Кайт сетовал что "ФК" вложенной не индексируется,
видать прислушались и добавили индекс

тогда понятно, идет по составному индексу и получается упорядоченое

.....
stax
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / nested table sort
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]