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
>
>

Responder a