[pgbr-geral] duvida com return as json
Boa noite Pessoal, vejam se podem me ajudar, tenho um a função no postgresql 9.4 que me retorna um json, mas esta ocorrendo erro ao executar a mesma, sendo que se executar somente o select do json, está funcionando, logo acho que é algo em relação ao retorno da função.. retornando o erro: ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead. CONTEXT: PL/pgSQL function get_historico_mensagem(integer,character varying) line 11 at SQL statement CREATE OR REPLACE FUNCTION public.get_historico_mail( _idmail integer, _token character varying) RETURNS json AS --DECLARE _tokencal varchar; BEGIN _tokencal=CAST(_idmail as VARCHAR); IF EXISTS (SELECT 1 from maillog where idmail=_idmail) then IF getmd5(_token,_tokencal) THEN SELECT row_to_json(r) FROM (SELECT array_agg(mp.idmail) idmail, array_agg(mp.telefone) telefone, array_agg(mp.datahoraenvio) datahoraenvio, array_agg(mp.id) id, array_agg(mp.dtregistro) dtregistro, array_agg(mp.datahoraenvio) dtenvio FROM maillog mp where mp.idmail=_idmail ) r where r IS NOT NULL; else RAISE EXCEPTION '%','INVALID TOKEN'; END IF; else RAISE EXCEPTION '%','mail não encontrado ('||_idmail||')'; END IF; END; $BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER -- Douglas Fabiano Specht ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] duvida com return as json
On Mon, May 4, 2015 at 11:06 PM, Douglas Fabiano Specht douglasfabi...@gmail.com wrote: retornando o erro: ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead. CONTEXT: PL/pgSQL function get_historico_mensagem(integer,character varying) line 11 at SQL statement CREATE OR REPLACE FUNCTION public.get_historico_mail( ... SELECT row_to_json(r) ... O problema é que você executa essa consulta e não usa o retorno desta em nenhum lugar. Além disso, sua função não faz retorno algum. Se você quiser retornar o resultado do row_to_json, você deve salvar numa variável (usando o INTO) e retorná-la, algo como: DECLARE ret json; ... -- Executa a query e salva o resultado em ret: SELECT row_to_json(r) INTO ret FROM ... resto do SELECT -- Retorna a variável ret na função: RETURN ret; ... Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] duvida com return as json
2015-05-06 11:12 GMT-03:00 Matheus de Oliveira matioli.math...@gmail.com: On Mon, May 4, 2015 at 11:06 PM, Douglas Fabiano Specht douglasfabi...@gmail.com wrote: retornando o erro: ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead. CONTEXT: PL/pgSQL function get_historico_mensagem(integer,character varying) line 11 at SQL statement CREATE OR REPLACE FUNCTION public.get_historico_mail( ... SELECT row_to_json(r) ... O problema é que você executa essa consulta e não usa o retorno desta em nenhum lugar. Além disso, sua função não faz retorno algum. Se você quiser retornar o resultado do row_to_json, você deve salvar numa variável (usando o INTO) e retorná-la, algo como: DECLARE ret json; ... -- Executa a query e salva o resultado em ret: SELECT row_to_json(r) INTO ret FROM ... resto do SELECT -- Retorna a variável ret na função: RETURN ret; ... Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Obrigado.. resolvido.. -- Douglas Fabiano Specht ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral