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 _][_