Ola amigo, me de um feedback, deu certo a funcao que eu enviei???

[image: Foto]
*LuMoraes*
*O mais completo para seu comércio.*

Em 30 de agosto de 2016 17:41, lu moraes santos <djrlumor...@gmail.com>
escreveu:

> ola amigo agora entendi , segue abaixo sua solucao:
>
> CREATE OR REPLACE FUNCTION public.dominio (
>   p_dominio text,
>   p_sequencia text
> )
> RETURNS TABLE (
>   codigo INTEGER,
>   descricao TEXT
> ) AS
> $body$
> DECLARE
>   rQtde RECORD;
>   vetDescricao TEXT[];
>   vetCodigo INTEGER[];
>   i INTEGER;
> BEGIN
>  CREATE TEMP TABLE dominio(
>   codigo INTEGER,
>   descricao TEXT );
>
>  i:=1;
>  SELECT INTO vetDescricao string_to_array(p_dominio,',');
>  SELECT INTO vetCodigo string_to_array(p_sequencia,',');
>  FOR rQtde IN SELECT unnest(string_to_array(p_dominio,',')) as dominio
>  LOOP
>    INSERT INTO dominio(codigo,descricao) VALUES(vetCodigo[i],
> vetDescricao[I]);
>     i:=i+1;
>  END LOOP;
>  RETURN query SELECT * FROM dominio;
>  DROP TABLE dominio;
> END;
> $body$
> LANGUAGE 'plpgsql'
> VOLATILE
> CALLED ON NULL INPUT
> SECURITY INVOKER
> COST 100 ROWS 1000;
>
> PARA USAR:
>
> SELECT * from dominio('UM,DOIS,TRES','1,2,3')
>
>
> [image: Foto]
> *LuMoraes*
> *O mais completo para seu comércio.*
>
> 2016-08-30 17:17 GMT-03:00 Carlos Antônio Pereira <
> carlosanto...@utivida.com.br>:
>
>>
>> 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
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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