Hola a tod@s!!
Tengo una base de datos para gestionar una explotación de ganado vacuno y hago un procedimiento en el que se actualiza la tabla vacas, poniendo a uno (verdadero) un campo lógico que comprueba si la vaca está preñada. Esto lo hace para todas aquellas vacas cuya fecha de inseminación sea mayor o igual a tres meses. Utilizo un cursor para ello. El procedimiento es sencillo, y no da ningún error (ese es el problema), ya que cuando lo ejecuto me dice el número de filas que han sido afectadas y lo hace bien, pero el problema es que cuando voy a revisarlo a la tabla resulta que no las ha modificado. No logro entender por qué. Os muestro el código:
CREATE PROCEDURE PControlaIns
AS
DECLARE @Cod CHAR(14), @FechIns DATETIME
DECLARE CControlaIns CURSOR FOR SELECT CodVac, FechaInsVac FROM Vacas WHERE DateDiff(m,FechaInsVac,GETDATE())>=3 AND FechaInsVac IS NOT NULL
/*Mediante esta consulta obtengo directamente los registros que hay que modificar, con lo que no tengo que hacer
ninguna comprobación más, basta con recorrer los registros del cursor y actualizar el campo correspondiente en
el registro.*/
BEGIN
OPEN CControlaIns
FETCH CControlaIns INTO @Cod, @FechIns
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Vacas SET PreñadaVac='1' WHERE CodVac=@Cod
FETCH NEXT FROM CControlaIns
END
CLOSE CControlaIns
DEALLOCATE CControlaIns
END
--Llamada al procedimiento:
EXEC PControlaIns
por más vueltas que lo doy no logro entender por qué no actualiza.
Si alguien sabe algo le agradecería mucho que me diera su opinión.
(Estoy empezando con esto de los triggers y proc. almacenados y no lo tengo muy claro.)
Saludos