Ola boa tarde amigo 

Veja uma funcao exemplo:

CREATE OR REPLACE FUNCTION teste(pSeuParaMetro)
  RETURNS TABLE(id_produto integer, codfor character varying, codbar character 
varying, descricao character varying, qtd_minima integer, estoque numeric, 
reposicao numeric, prateleira character varying) AS
$BODY$
BEGIN 
  RETURN QUERY SELECT id_produto , codfor  , codbar  , descricao, qtd_minima , 
estoque , reposicao , prateleira FROM tabela WHERE campo=pSeuParaMetro;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;

veja se isto te ajuda.



Obrigado pela dica.
Mas a idéia é construir um record e retorná-lo a partir do parâmetro passado 
para a função, sem que tenha uma tabela relacionada ao retorno.

Algo como: 

select dominio(‘Sim;Não’);

Retorno:
codigo descricao
1          Sim
2          Não

select dominio(‘CPF;CNPJ’);
codigo descricao
1          CPF
2          CNPJ



Pensei nisto:

CREATE TYPE type_dominio AS (
    codigo INT,
    descricao VARCHAR
);


CREATE FUNCTION dominio(varchar) RETURNS SETOF type_dominio AS $$
DECLARE
    dados_dominio type_dominio;
BEGIN
    FOR ... LOOP
        ...;
    END LOOP;
    RETURN;
END;
$$ LANGUAGE 'plpgsql'

SELECT * FROM dominio(‘Sim;Não’);


Não sei o que fazer dentro do loop...
Talvez se passar um array como parametro...













--------------------------------------------------------------------------------
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a