problema de novato con cursores

From: "fernando gamba" <gamba(dot)fernando(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: problema de novato con cursores
Date: 2007-06-13 12:27:32
Message-ID: e355e6800706130527u1136562u35b38a1f5856f7ff@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

hola a todos muy bueno el sitio, felicitaciones...

mi problema es el siguiente: deseo sincronizar dos tablas iguales de
dos DB diferentes , una es sucursal y la otra casa central. Para
ello, me valgo de una columna tipo timestamp en cada tabla, el
algoritmo seria:
recorro la tabla a actualizar (tito en el ejemplo), busco ultima fecha
de actualizacion (columna "creada"), recorro tabla de casa central que
tiene las actualizaciones (pepe en el ejemplo) y busco aquellas filas
que tienen columna "creada" mayor que la que recupere de la tabla
tito, cargo un cursor, y luego voy haciendo insert o updates segun
corresponda en la tabla tito

Aca esta el codigo:
(las tablas pepe y tito tienen la misma estructura)
DECLARE
....
Desde timestamp;
curpepe refcursor;
regpepe pepe%ROWTYPE;
....
BEGIN
...
Desde:= select into Desde COALESCE(max(creada),0) from tito;

contador:=0;
OPEN curpepe FOR
SELECT * FROM pepe WHERE creada > Desde;
LOOP
FETCH curpepe INTO regpepe;
IF (EXISTS (SELECT idtito FROM tito WHERE idtito = regpepe.idpepe))
THEN
UPDATE tito
SET nombre = regpepe.nombre,
creada = regpepe.creada
WHERE idtito = regpepe.idpepe;
ELSE
INSERT INTO tito(idtito, nombre, creada)
VALUES (regpepe.idpepe, regpepe.nombre, regpepe.creada);
END IF;
--EXIT WHEN NOT FOUND;
contador := contador + 1;
RAISE NOTICE 'contador %', contador;
END LOOP;
CLOSE curpepe;

el problema es que el ultimo renglon que trata de insertar es nulo,
pero no veo donde esta la falla, paso el log:
ERROR: null value in column "idtito" violates not-null constraint
CONTEXT: SQL statement "INSERT INTO tito(idtito, nombre, creada)
VALUES ( $1 , $2 , $3 )"

desde ya muchas gracias por cualquier ayuda y espero haber sido claro
con la exposicion del problema

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-06-13 12:51:08 Re: Seguridad
Previous Message Mario Gonzalez 2007-06-13 12:26:25 Re: Seguridad