Re: FOUND retorna TRUE siempre cuando le sigue una variable en el PERFORM

From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: Lista Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Cc: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
Subject: Re: FOUND retorna TRUE siempre cuando le sigue una variable en el PERFORM
Date: 2010-02-05 20:45:37
Message-ID: f205bb121002051245l697d3ab4hec81900092e6079a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> Tengo una función que adentro tiene una comprobación de con un FOUND.
> El asunto es que si coloco la consulta en una variable y luego lo utilizo en el
> PERFORM, el FOUND siempre queda en true.
>
> " ...
> sql = ' numero, count(*) from tabla group by numero having count(*)>1';
> PERFORM sql;
>
>  IF FOUND THEN
>    r := (false,'Hay repetidos',sql)::control_type;
>    RETURN NEXT r;
>  END IF;
> ..."
>
> Ahora bien, el FOUND quedá bien si lo coloco de esta manera:
>
> "...
> sql = ' numero, count(*) from tabla group by numero having count(*)>1';
> PERFORM numero, count(*) from tabla group by numero having count(*)>1;
>
>  IF FOUND THEN
>    r := (false,'Hay repetidos',sql)::control_type;
>    RETURN NEXT r;
>  END IF;
> ..."
>
> Es algo que no haya tenido en cuenta?
>
>

Me había olvidado. Las versiones en las que probé esto son 8.3.8 y 8.4.2

Estuve mirando el código en pl_exec.c ya que creia en primera instancia, que
podía haber algún comentario en el código respecto del comportamiento interno
del PERFORM + FOUND.

--
Emanuel Calvo Franco
DBA at: www.siu.edu.ar
www.emanuelcalvofranco.com.ar
Join: http://www.thevenusproject.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Marc 2010-02-05 23:25:39 BUG #5317: no puedo instalarlo
Previous Message Emanuel Calvo Franco 2010-02-05 19:25:21 FOUND retorna TRUE siempre cuando le sigue una variable en el PERFORM