Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Cursores

Estas en el tema de Cursores en el foro de PostgreSQL en Foros del Web. Hola tengo que hacer un ejercicio que pide: Cita: Realice una función que reciba como parámetros una fecha desde y una fecha hasta, cargue el ...
  #1 (permalink)  
Antiguo 10/11/2013, 14:22
 
Fecha de Ingreso: junio-2013
Ubicación: Jujuy
Mensajes: 9
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Cursores

Hola tengo que hacer un ejercicio que pide:
Cita:
Realice 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 OperacionesEspeciales
Estuve intentando hacer pero hasta ahora no lo puede hacer y la verdad ya no se me ocurre nada más!!
Cita:
La tabla Operaciones tiene como datos: NroOperac, FechaOperacion,
TotalOper, MatriculaOdontologo, CodPaciente; donde NroOperac es la clave primaria y MatriculaOdontologo con CodPaciente son claves foraneas
la tabla OperacionesEspeciales tiene los mismos datos que Operaciones
Si pueden ayudarme se los agradecería!!
  #2 (permalink)  
Antiguo 12/11/2013, 07:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Cursores

CLaro que podemos ayudarte... pero que has intentado hacer?
Pon tu codigo y los errores que te muestra
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 15/11/2013, 21:56
 
Fecha de Ingreso: junio-2013
Ubicación: Jujuy
Mensajes: 9
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Cursores

Hola huesos52 el código que hice es este:
Cita:
CREATE OR REPLACE FUNCTION Operaciones(fech_desde date, fech_hasta date)
RETURNS VOID AS $Op$
DECLARE
NroOp int; FecOp date; Total float; MatOd int; CodPa char(3);
OpCursor CURSOR(fech_desde date, fech_hasta date) FOR SELECT * FROM Encabezado_Oper;
BEGIN
OPEN OpCursor(fech_desde, fech_hasta);
LOOP
FETCH OpCursor INTO NroOp;
INSERT INTO OperacionesEspeciales SELECT * FROM Encabezado_Oper
WHERE FechaOperación BETWEEN fech_desde AND fech_hasta AND NroOperac <> NroOp;
EXIT WHEN NOT FOUND;
END LOOP;
CLOSE OpCursor;
END;
$Op$ LANGUAGE 'plpgsql';
cuando lo ejecuto no me marca ningún error, pero cuando ejecuto la función
Cita:
SELECT Operaciones('11/10/13','14/10/13');
me aparece esto:
Cita:
ERROR: llave duplicada viola restricción de unicidad «operacionesespeciales_pkey»
DETAIL: Ya existe la llave (nrooperac)=(107).
CONTEXT: sentencia SQL: «INSERT INTO OperacionesEspeciales SELECT * FROM Encabezado_Oper
WHERE FechaOperación BETWEEN fech_desde AND fech_hasta AND NroOperac <> NroOp»
función PL/pgSQL operaciones(date,date) en la línea 9 en sentencia SQL
********** Error **********

ERROR: llave duplicada viola restricción de unicidad «operacionesespeciales_pkey»
SQL state: 23505
Detail: Ya existe la llave (nrooperac)=(107).
Context: sentencia SQL: «INSERT INTO OperacionesEspeciales SELECT * FROM Encabezado_Oper
WHERE FechaOperación BETWEEN fech_desde AND fech_hasta AND NroOperac <> NroOp»
función PL/pgSQL operaciones(date,date) en la línea 9 en sentencia SQL

Etiquetas: postgres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:30.