Re: Ayuda con este error.

From: "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com>
To: "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx>
Cc: "Raul Caso" <feve18(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con este error.
Date: 2006-07-04 22:34:35
Message-ID: 5aa69e1b0607041534t39d8ba25h266082f731b7aa7d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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_idWHERE 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 Miguel Angel 2006-07-04 22:42:42 RE: Ayuda con este error.
Previous Message Miguel Angel 2006-07-04 22:27:49 RE: Ayuda con este error.