Ordenando uma PL Table, novo exemplo

[ad#texto]

Vimos uma forma de ordenar uma PL Table utilizando um TYPE físico no banco de dados, mas e se por um motivo ou outro não pudermos criar o TYPE físico, é possível ordenar uma PL Table?

Sim, é possível, porém não é recomendado para uma PL Table com muitos registros, pois será necessário ir refazendo um FETCH dos dados e isso irá causar lentidão para grandes volumes de dados. Veja o exemplo:

declare
 tab sys.owa_util.vc_arr;
 type sorted_tab is table of varchar2(32767) index by varchar2(32767);
 sorted sorted_tab;
 id1 pls_integer;
 id2 varchar2(32767);

begin
 tab(1) := 'hello';
 tab(2) := 'george';
 tab(5) := 'no';
 id1 := tab.FIRST;

 WHILE id1 IS NOT NULL LOOP
  sorted(tab(id1)) := tab(id1);
  id1 := tab.NEXT(id1);
 END LOOP;

 id2  := sorted.FIRST;

 WHILE id2 IS NOT NULL LOOP
  dbms_output.put_line(sorted(id2));
  id2 := sorted.NEXT(id2);
 END LOOP;
end;

O trecho do código PL/SQL acima utilizou o OWA para possibilitar a utilização o ordenamento após a criação dos dados de forma mecânico, ou seja, iterando sobre os resultados, por isso não é recomendado para grandes volumes de dados.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.