Ilano 0 Denunciar post Postado Agosto 27, 2010 Olá pessoal, Como posso desenvolver a procedure abaixo corretamente? Grato, Ilano. CREATE PROCEDURE `resultado`(IN vlCodigo INTEGER(11)) NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT '' BEGIN UPDATE tb_alunosdet SET SituacaoFinal = (SELECT CASE WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND MP >= ValorMedia AND Falta <= CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "APR" WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND FechaAF = "True" AND (MP BETWEEN MediaLimite AND ValorMedia) AND TRUNCATE((MP + AF) / 2, 2) >= MediaAF AND Falta <= CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "AMF" WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND FechaAF = "True" AND (MP BETWEEN MediaLimite AND ValorMedia) AND TRUNCATE((MP + AF) / 2, 2) < MediaAF AND Falta <= CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "RMF" WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND MP < MediaLimite AND Falta > CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "REP" WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND MP < MediaLimite AND Falta < CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "REP" WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND FechaAF = "False" AND MP BETWEEN MediaLimite AND MediaAF AND Falta < CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "REP" WHEN FechaNP1 = "True" AND FechaNP2 = "True" AND FechaNP3 = "True" AND Falta > CAST((HoraAula - ((HoraAula * 75)/100)) AS SIGNED) THEN "REF" ELSE NULL END FROM tb_alunosdet WHERE CodigodoDetalhe = vlCodigo) WHERE CodigodoDetalhe = vlCodigo; END; Compartilhar este post Link para o post Compartilhar em outros sites
Diego E. Martins 0 Denunciar post Postado Agosto 29, 2010 Acho que voçê precisa postar qual a necessidade e qual o problema não? Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Setembro 3, 2010 Diego, O q eu preciso é atualizar o campo SituacaoFinal quando uma das condições atenderem aos casos descritos no select da Procedure, isto é, o campo SituacaoFinal receberá: APR = ARPOVADO AMF = APROVADO POR MÉDIA FINAL RMF = REPROVADO POR MÉDIA FINAL REP = REPROVADO REF = REPROVADO POR FALTA NULL = NULO Olá pessoal, Ainda não consegui resolver aquele problema, então tentei partir para uma trigger abaixo.. CREATE TRIGGER atualiza_situacao AFTER UPDATE ON tb_alunosdet FOR EACH ROW BEGIN SET NEW.SituacaoFinal = SELECT SITUACAO_FINAL FROM v_situacoes WHERE CodigodoDetalhe = NEW.CodigoDoDetalhe; -- Realiza uma consulta na view (v_situacoes) que está retornando um único valor e atualiza o campo SituacaoFinal END; Mas, tb está dando erro... Updating of NEW row is not allowed in after trigger O q está errado??? Compartilhar este post Link para o post Compartilhar em outros sites