Ir para conteúdo

POWERED BY:

Arquivado

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

Ilano

Como desenvolver esta procedure

Recommended Posts

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,

 

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

×

Informação importante

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