[pgbr-geral] duvida com return as json

2015-05-06 Por tôpico Douglas Fabiano Specht
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

2015-05-06 Por tôpico Matheus de Oliveira
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 Por tôpico Douglas Fabiano Specht
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