From: | "Manuel A(dot) Estevez Fernandez" <stvzito(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | problema con cursores |
Date: | 2009-03-03 18:21:08 |
Message-ID: | 19d91cd00903031021o786ae0bbs435d00710f62eaa1@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Mi necesidad es la siguiente, tengo que insertar una gran cantidad de
registros dentro de una tabla (conciliacion_inventario) y luego tengo que
tomar todos aquellos registros que indican diferencias, y buscar en que
partes de otra tabla coinciden los registros y regresar a un campo de
observaciones la posicion de las diferencias, para realizar esta tarea
decidi utilizar un trigger que cambie las observaciones y coloque el lugar
donde se encuentra la diferencia. Cabe mencionar que tengo poca experiencia
en manejo de base de datos... y me dijeron que deberia utilizar cursores
para poder manejar todos esos registros por que si no solo se aplicaria el
cambio al primer registro insertado.
mis tablas son de la siguiente manera:
conciliacion_inventario(id_
conciliacion,id_inventario,id_sucursal,id_articulo,cantidad_conteo,cantidad_sistema,diferencia,observaciones)
marbetes(id_marbete,id_mueble,id_inventario,id_sucursal,id_articulo,cantidad)
y esta es la funcion donde tengo problemas:
CREATE FUNCTION marbetear_conciliacion()
RETURNS TRIGGER
AS $funcion$
DECLARE
cur_conciliacion CURSOR FOR SELECT
ci.id_articulo,(m.id_mueble||'-'||m.id_marbete) AS observaciones FROM
marbetes m, conciliacion_inventario ci WHERE ci.direnciancia<>0 AND
ci.id_articulo=m.id_articulo GROUP BY
ci.id_articulo,m.id_mueble,m.id_marbete ORDER BY ci.id_articulo;
BEGIN
IF(TG_OP='INSERT') THEN
OPEN cur_conciliacion;
FETCH NEXT IN cur_conciliacion;
WHILE(FOUND)LOOP
BEGIN
SELECT observaciones = observaciones + ',';
UPDATE conciliacion_inventario SET observaciones =
(observaciones + observaciones)
WHERE NEW.id_articulo=ci.id_articulo;
FETCH NEXT IN cur_conciliacion ;
END;
END LOOP ;
CLOSE cur_conciliacion;
END IF;
END;
$funcion$ LANGUAGE 'plpgsql';
Espero que pudieran decirme donde esta mi error o ayudarme a buscar otra
solucion.
De antemano gracias y que en espera de sus comentarios
--
by:
Manuel Alejandro Estevez Fernandez
_][_ Stvz _][_
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Sepúlveda Sotomayor | 2009-03-03 18:41:01 | Base de datos Objeto en Postgres |
Previous Message | Manuel A. Estevez Fernandez | 2009-03-03 18:16:13 | problema con cursores |