Fíjate en la estructura de la tabla, acabo de reproducir tu error, y este se debe a que la primera columna de tu tabla es de tipo entero y en la función estas devolviendo un varchar como primera columna. Te recomiendo que cambies el orden en el que devuelves las cosas en la consulta definida en la función.
Saludos. De: pgsql-es-ayuda-ow...@postgresql.org [mailto:pgsql-es-ayuda-ow...@postgresql.org] En nombre de Ana Claudia Smail Enviado el: martes, 22 de noviembre de 2011 08:46 Para: pgsql-es-ayuda@postgresql.org Asunto: [pgsql-es-ayuda] consulta función Hola a todos! Estoy teniendo un problema con una función en progresql 8.4: CREATE OR REPLACE FUNCTION getLibres(varchar(20), varchar(20)) RETURNS SETOF tabla1 AS $BODY$ DECLARE r tabla1%rowtype; BEGIN IF $2 IS NULL THEN FOR r IN SELECT CAST($1 AS VARCHAR(255)),count(*) FROM tabla1 WHERE tabla1.confirmada = '1' group by 1 order by 1 LOOP RETURN NEXT r; END LOOP; END IF; RETURN; END $BODY$ LANGUAGE 'plpgsql' ; Cuando ejecuto SELECT * FROM getLibres('campo1',NULL); Me tira el siguiente error: ERROR: la sintaxis de entrada no es válida para integer: «campo1» CONTEXT: PL/pgSQL function "getlibres" line 5 at bucle FOR en torno a registros de un SELECT Porqué me toma el campo como integer? Gracias por su tiempo ANA