OBS: Faltou só o anexo.
Agora está certo!

2009/9/1 Leandro Cavalari Soares <[email protected]>

> Boa Tarde Bruno!
> Dias atrás precisei que o retorno de uma função fosse um tipo composto e
> encontrei uma solução sem a necessidade de se criar explicitamente um tipo
> ou uma tabela.
>
> Um exemplo encontra-se em anexo, seguindo o seguinte raciocício:
>
>    - A função retorna SETOF RECORD;
>    - Os valores desejados são agrupados em um RECORD que é adicionado ao
>    conjunto de retorno dentro de um LOOP.
>
> Mas tem um porém: essa abordagem não descartará a redeclaração da função
> uma vez que você precise adicionar mais colunas ao conjunto de dados
> retornado.
>
> Espero que o exemplo lhe seja útil.
>
> Bom Trabalho!
>
> --
> Leandro Cavalari Soares
> Analista de Sistemas / DBA
> Veltrac - Tecnologia em Logística
> (43) 2105-5614 / (43) 9922-8095 - Londrina / PR
>



-- 
Leandro Cavalari Soares
Analista de Sistemas / DBA
Veltrac - Tecnologia em Logística
(43) 2105-5614 / (43) 9922-8095 - Londrina / PR
-- FUNÇÃO
CREATE OR REPLACE FUNCTION fnBuscarFuncionarios(nomeDepartamento varchar)
  RETURNS SETOF record AS
$BODY$
DECLARE
        reg RECORD;
BEGIN
        FOR reg IN SELECT funcionario.nome AS fun_nome, departamento.nome AS 
dep_nome FROM funcionario JOIN departamento ON funcionario.dep_id = 
departamento.id WHERE departamento.nome ~ nomeDepartamento 
        LOOP
                RETURN NEXT reg;
   END LOOP;

        RETURN;
END;
$BODY$
  LANGUAGE 'plpgsql';

-- CHAMADA DA FUNÇÃO
SELECT * FROM fnBuscarFuncionarios('ADM') AS (fun_nome varchar, 
departamento.nome varchar);
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a