Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / nested table sort / 15 сообщений из 15, страница 1 из 1
29.03.2018, 16:13
    #39622746
in17011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
Код: 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
29.03.2018, 16:24
    #39622750
in17011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
Код: 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
29.03.2018, 17:37
    #39622817
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
in17011,
нет практики с вложенными таблицами
не понимаю order by b.nested_table_id desc;

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


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

.....
stax
...
Рейтинг: 0 / 0
30.03.2018, 11:52
    #39623160
brzl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
Код: 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
30.03.2018, 11:58
    #39623170
brzl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
brzl,

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

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

.....
stax
...
Рейтинг: 0 / 0
30.03.2018, 17:43
    #39623515
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
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
30.03.2018, 22:09
    #39623596
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
Для varray порядок отражает sys_nc_array_index, но доступно оно только в ddl, а вместе с nested_table_id образуют глобально уникальный ключ.
...
Рейтинг: 0 / 0
31.03.2018, 17:13
    #39623729
in17011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
dbms_photoshop,
Спасибо за разъяснение.
...
Рейтинг: 0 / 0
02.04.2018, 10:56
    #39624061
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nested table sort
dbms_photoshop,

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

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

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


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