From: | "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx> |
---|---|
To: | "'Linder Poclaba'" <linder(dot)poclaba(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:42:42 |
Message-ID: | 20060704224129.0A9C39FACFE@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Muchas gracias, no me pude dar cuenta de mi estúpido error.
_____
De: Linder Poclaba [mailto:linder(dot)poclaba(at)gmail(dot)com]
Enviado el: Martes, 04 de Julio de 2006 05:35 p.m.
Para: Miguel Angel
CC: Raul Caso; pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Ayuda con este error.
fijate estas colocando alias a "accnt_1" con el nombre "a" y tambien
declaraste con ese nombre tu variable de tipo RECORD.
On 7/4/06, Miguel Angel <mvillagomez(at)sayab(dot)com(dot)mx> wrote:
"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
From | Date | Subject | |
---|---|---|---|
Next Message | Edgar Guzman | 2006-07-04 23:52:12 | problemas con ms2pg.vbs |
Previous Message | Linder Poclaba | 2006-07-04 22:34:35 | Re: Ayuda con este error. |