Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BetoGroo

[Resolvido] Testar Data

Recommended Posts

Olá!

 

Preciso de uma procedure que teste cada linha de uma table (mandado) e se o campo validade for menor que a data atual, o campo situação atualizará para 2.

 

depois de pesquisas, cheguei ao seguinte código, utilizando cursor:

DELIMITER $$

USE delpol $$

CREATE PROCEDURE datamp()
BEGIN

DECLARE done int default 0;
DECLARE vencimento date;

declare cursor_mp CURSOR FOR SELECT validade from mandado;

DECLARE continue handler for not found set done = 1;

open cursor_mp;

loop_mp: LOOP
	FETCH cursor_mp into vencimento;
	
	if done = 1 then
		leave loop_mp;
	end if;
	
	if vencimento < CURDATE() THEN
		update mandado set id_situacao = 2;
	END IF;
	
end LOOP loop_mp;
 
END $$

Porém, ele atualiza todas as linhas da tabela, quando que era par atualizar somente as com o prazo de validade vencido.

 

Eis minha table mandado:

 

CREATE  TABLE IF NOT EXISTS `delpol`.`mandado` (
  `protocolo` INT(6) NOT NULL AUTO_INCREMENT ,
  `id_reu` INT NOT NULL ,
  `id_processo` INT NOT NULL ,
  `validade` DATE NULL ,
  `recebimento` DATE NULL ,
  `observacoes` MEDIUMTEXT NULL ,
  `id_situacao` INT NOT NULL ,
  PRIMARY KEY (`protocolo`, `id_reu`, `id_processo`) ,
  INDEX `fk_reu_processo_reu1` (`id_reu` ASC) ,
  INDEX `fk_reu_processo_processo1` (`id_processo` ASC) ,
  INDEX `fk_mandado_situacao1` (`id_situacao` ASC) ,
  CONSTRAINT `fk_reu_processo_reu1`
	FOREIGN KEY (`id_reu` )
	REFERENCES `delpol`.`reu` (`id` )
	ON DELETE NO ACTION
	ON UPDATE NO ACTION,
  CONSTRAINT `fk_reu_processo_processo1`
	FOREIGN KEY (`id_processo` )
	REFERENCES `delpol`.`processo` (`id` )
	ON DELETE NO ACTION
	ON UPDATE NO ACTION,
  CONSTRAINT `fk_mandado_situacao1`
	FOREIGN KEY (`id_situacao` )
	REFERENCES `delpol`.`situacao` (`id` )
	ON DELETE NO ACTION
	ON UPDATE NO ACTION)
ENGINE = InnoDB

 

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

update mandado set id_situacao = 2
where vencimento < CURDATE()
and recebimento is null

Supondo que recebimento indique o pagamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.