BetoGroo 0 Denunciar post Postado Novembro 4, 2010 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
Motta 645 Denunciar post Postado Novembro 4, 2010 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
BetoGroo 0 Denunciar post Postado Novembro 5, 2010 Obrigado! Uma coisa tão simples, e eu complicando desse jeito! Valeu! Compartilhar este post Link para o post Compartilhar em outros sites