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