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

Responder a