pues podrias mejor utilizar SETOF RECORD
y claro declarar la r de tipo record
asi podrias obtener el resultado que deseas y solo tienes que darle un buen
formato cuando le llames
SELECT * FROM getLibres('campo1',NULL) as (campo1 VARCHAR(255),campo2
INTEGER)

2011/11/22 Lazaro Rubén García Martinez <lgarc...@vnz.uci.cu>

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



-- 
----------------------
Dali Aparicio T.
consultor TIC
(591)75271108
(591)76800519
----------------------

Reply via email to