Caros,

é possível, em uma stored procedure, recuperar o conteúdo de uma tabela,
armazena-lo em um array do tipo record e realizar iterações sobre esse
array? Eu preciso ter o array previamente preenchido antes de começar a
analisa-lo. Consigo carregar um registro por vez, mas isso não serve para o
meu caso.

Agradeço se alguém tiver alguma sugestão.

Abaixo está um exemplo simplificado do que eu estou precisando.

CREATE OR REPLACE FUNCTION record_to_array()
  RETURNS void AS

DECLARE

tab_record[] record; -- A declaração seria algo parecido com isso. Sei que
essa forma que coloquei não existe.
 qtd_tab_record integer;

BEGIN
-- quantidade de linhas da tabela
 SELECT count(t.*) INTO qtd_tab_record FROM tabela t;
 -- conteudo da tabela
 SELECT t.* INTO tab_record FROM tabela t; -- campos de t: id e nome

-- iterar no record como se fosse um array
 FOR i IN 1..qtd_tab_record LOOP
 IF ( tab_record[i].id > tab_record[i+1].id ) THEN
 RAISE NOTICE '%', tab_record[i].nome;

ELSE
 RAISE NOTICE '%', tab_record[i+1].nome;
 END IF;

END LOOP;

END;

-- 
Atenciosamente,

Jackson Soares Silva
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a