o devuelve como parametro un refcursor, asi podrás devolver cualquier resultado en una funcion
>________________________________ > De: Lazaro Rubén García Martinez <[email protected]> >Para: Ana Claudia Smail <[email protected]>; >"[email protected]" <[email protected]> >Enviado: martes 22 de noviembre de 2011 8:47 >Asunto: RE: [pgsql-es-ayuda] consulta función > > > >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:[email protected] [mailto:[email protected]] En nombre de Ana Claudia Smail >Enviado el: martes, 22 de noviembre de 2011 08:46 >Para: [email protected] >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 > >
