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