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.

Tags:,
Petter Rafael
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.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 325 outros assinantes

Busca

julho 2020
DSTQQSS
 1234
567891011
12131415161718
19202122232425
262728293031 

Categorias