RE: Ayuda con este error.

From: "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx>
To: "'Raul Caso'" <feve18(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Ayuda con este error.
Date: 2006-07-04 22:27:49
Message-ID: 20060704222635.D0CE79FA45F@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

“Creo que despues del end loop te falta un return next a”

Gracias, pero no, el único valor que estoy regresando es un valor de tipo
entero que me tiene que decir cuantos clientes fueron afectados.

He buscado en el query que va dentro del FOR y es este el subquery que no
permite la ejecución de la función:

SELECT attrib_01, act_id, postn_id, con_id, accn_id, type_id, status, fecha,
empleado_id FROM accnt_1 a INNER JOIN act b ON a.accnt_id=b.accn_id WHERE
type='CLIENTE' AND (attrib_20<>56 OR attrib_20 IS NULL)

Pero lo que no entiendo; por que no me permite correr la función si este
query es perfectamente válido, o me equivoco?

_____

De: Raul Caso [mailto:feve18(at)gmail(dot)com]
Enviado el: Martes, 04 de Julio de 2006 05:13 p.m.
Para: Miguel Angel
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Ayuda con este error.

El día 4/07/06, Miguel Angel <mvillagomez(at)sayab(dot)com(dot)mx> escribió:

Estoy haciendo una función para que me pueda colocar los últimos productos
que compro un cliente, pero cuando voy a ejecutar mi función me sale un
error, ya vi el código y todo parece estar bien, también he visto que la
consulta dentro del for traiga los valores correctos.

Esta es la función:

CREATE OR REPLACE FUNCTION Poncomentarios() RETURNS INTEGER AS $$
DECLARE
a RECORD;
cont INTEGER:=0;
prod1 VARCHAR;
prod2 VARCHAR;
BEGIN
FOR a IN (...) LOOP
prod1=(SELECT productos::varchar FROM productos WHERE
attrib_01=a.attrib_01 AND listo=1 ORDER BY orden LIMIT 1);
prod2=(SELECT productos::varchar FROM productos WHERE
attrib_01=a.attrib_01 AND listo=1 ORDER BY orden LIMIT 1 OFFSET 1);
UPDATE act SET comment= (comment || ' - Ultimos productos comprados: ' ||
prod1 || ' - ' || prod2)::varchar WHERE act_id=a.act_id;
cont:=cont+1;
END LOOP;
RETURN cont;
END;
$$ LANGUAGE PLPGSQL;
SELECT Poncomentarios();

No pongo la consulta que va dentro del for ya que es bastante extensa, pero
ya la cheque y si funciona perfectamente, también ya he checado que el
nombre de columnas y tablas este correcto.
Este es el error que me sale:

ERROR: record "a" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT: PL/pgSQL function "poncomentarios" line 7 at for over select rows

Creo que despues del end loop te falta un return next a

--
¿Quieres ser parte del 5% o del 95%?
http://www.yor.net/rcaso
Raulinho
97033825-4327239

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Linder Poclaba 2006-07-04 22:34:35 Re: Ayuda con este error.
Previous Message Raul Caso 2006-07-04 22:13:26 Re: Ayuda con este error.