> 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/ -- TIP 5: �Has le�do nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html