From: | dali aparicio <dal(dot)work(at)gmail(dot)com> |
---|---|
To: | Lazaro Rubén García Martinez <lgarciam(at)vnz(dot)uci(dot)cu> |
Cc: | Ana Claudia Smail <anasmail(at)unnoba(dot)edu(dot)ar>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [pgsql-es-ayuda] consulta función |
Date: | 2011-11-22 13:57:50 |
Message-ID: | CALL0-Gs2z8s4YaWpk+H9H7Usmb8uV3fQELsECD5xD7+exNKugQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 <lgarciam(at)vnz(dot)uci(dot)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-owner(at)postgresql(dot)org [mailto:
> pgsql-es-ayuda-owner(at)postgresql(dot)org] *En nombre de *Ana Claudia Smail
> *Enviado el:* martes, 22 de noviembre de 2011 08:46
> *Para:* pgsql-es-ayuda(at)postgresql(dot)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
----------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Carrillo | 2011-11-22 13:59:01 | Re: [pgsql-es-ayuda] consulta función |
Previous Message | Lazaro Rubén García Martinez | 2011-11-22 13:47:24 | RE: consulta función |