Re: [pgsql-es-ayuda] consulta función

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

In response to

Browse pgsql-es-ayuda by date

  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