
Dudas con Cursores
Publicado por valeria (5 intervenciones) el 30/10/2014 05:48:04
Hola, espero puedan ayudarme con esta función, que por más vueltas que le he dado no puedo hallar el error.
Tengo que realizar una función que reciba como parámetros una fecha desde y una fecha hasta, cargue el cursor con los datos de operaciones, lea el cursor y grabe dichos datos en la tabla “operacionespecial”.
Esta es la función que hice:
Al ejecutar la función me sale como mensaje de error:
Este mensaje lo devuelve con todas la ejecuciones que haga.
Aclaro que tanto la Tabla Tb_Detalle_Operacion como Tb_OperacionesEspeciales contienen los mismos campos.
Tengo que realizar una función que reciba como parámetros una fecha desde y una fecha hasta, cargue el cursor con los datos de operaciones, lea el cursor y grabe dichos datos en la tabla “operacionespecial”.
Esta es la función que hice:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE OR REPLACE FUNCTION Operaciones(fech_desde date, fech_hasta date)
RETURNS VOID AS $Op$
DECLARE
NroOp int;
OpCursor CURSOR(fech_desde date, fech_hasta date) FOR SELECT * FROM Tb_Detalle_Operacion;
BEGIN
IF NroOperac <>
OPEN OpCursor(fech_desde, fech_hasta);
LOOP
FETCH OpCursor INTO NroOp;
INSERT INTO Tb_OperacionesEspeciales SELECT * FROM Tb_Detalle_Operacion
WHERE FechaOperacion BETWEEN fech_desde AND fech_hasta AND NroOperac <> NroOp;
EXIT WHEN NOT FOUND;
END LOOP;
CLOSE OpCursor;
END;
$Op$ LANGUAGE 'plpgsql';
Al ejecutar la función me sale como mensaje de error:
1
2
3
ERROR: llave duplicada viola restricción de unicidad «tb_operacionesespeciales_pkey»
DETAIL: Ya existe la llave (nrooperac)=(101).
CONTEXT: sentencia SQL: «INSERT INTO Tb_OperacionesEspeciales SELECT * FROM Tb_Detalle_Operacion
Aclaro que tanto la Tabla Tb_Detalle_Operacion como Tb_OperacionesEspeciales contienen los mismos campos.
Valora esta pregunta


0