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
Pergunta
BetoGroo
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:
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:Desde já agradeço!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.