Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с заданием используя Oracle PL/SQL.

Александр Дементьев Профи (648), на голосовании 2 года назад
Необходимо написать сортировку массива строк методом «пузырька».
Оформить в виде кода хранимой процедуры, на вход которой подается массив, возвращается массив.
Параметры
p_asc – сортировка по убыванию или по возрастанию (по умолчанию по возрастанию)

p_nulls_last – значения NULL в конце списка (по умолчанию они больше бОльшего)

declare

p_arr dbms_sql.Number_Table;

i pls_integer;

procedure do_sort(p_arr in out dbms_sql.Number_Table, p_asc in boolean default null, p_nulls_last in boolean default null) is

begin

return ; -- тут код сортировки

end;

begin

p_arr(-1) := 0;

p_arr(0) := -2;

p_arr(1) := 10.1;

p_arr(2) := null;

p_arr(3) := 10.1;

p_arr(4) := -1;

p_arr(6) := null;

do_sort(p_arr);

i := p_arr.first;

while i is not null loop

dbms_output.put_line('arr('||i||') = '||nvl(to_char(p_arr(i)), 'null')||';');

i := p_arr.next(i);

end loop;

end;
Голосование за лучший ответ
myodo.ru Мудрец (12806) 3 года назад
сортировать набор вручную на паскале в оракуле - это как на современном авиазаводе делать самолет напильником из дерева, используя программируемый многоосевой фрезерный станок в качестве верстака. преподаватель, который дает такое задание, не вполне профпригоден. в современных условиях низкоуровневую сортировку вообще имеет смысл реализовать только на ассемблере.

тип dbms_sql.number_table - уже индексированный набор, можно выбирать из него.
а проще так:

select column_value f from table(ta_number(1,2,3,4,5)) order by column_value desc
Похожие вопросы