2012/2/1, Willian Fernando <willian.unig...@hotmail.com>:
>
> Eu tenho a seguinte função:
> CREATE OR REPLACE FUNCTION public.getall ()
> RETURNS SETOF public.localizacao AS
> $body$
> DECLARE
>  r localizacao%rowtype;
> BEGIN
>  FOR r IN SELECT l.id, l.cep FROM localizacao l
>  WHERE l.status = 'A'
>  LOOP
>  -- can do some processing here
>  RETURN NEXT r; -- return current row of SELECT
>  END LOOP;
>  RETURN;
> END
> $body$
> LANGUAGE 'plpgsql'
> VOLATILE
> CALLED ON NULL INPUT
> SECURITY INVOKER
> COST 100 ROWS 1000;
>
> Ao compilar emite o seguine erro:
> ERRO:  sintaxe de entrada é inválida para integer: "32232-323"
> CONTEXT:  PL/pgSQL function "getall" line 4 at FOR sobre registros de SELECT
>
> tentei de tudo mais não consegui achar a solução pela internet, espero que
> possam me ajudar obrigado.                                    


Você declarou que r é um registro do tipo "localizacao", isto é,
possui os mesmos campos que a tabela localização, contudo em seu
SELECT você referencia apenas id e cep. Provavelmente estes não são
todos os campos da tabela localização.

Talvez você deva utilizar RECORD no lugar de ROWTYPE.

Osvaldo
http://www.postgresql.org/docs/current/interactive/plpgsql-declarations.html#PLPGSQL-DECLARATION-ROWTYPES
http://www.postgresql.org/docs/current/interactive/plpgsql-declarations.html#PLPGSQL-DECLARATION-RECORDS
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a