joaoxxx 0 Denunciar post Postado Maio 24, 2012 Preciso fazer em PL/SQL atualizar a media ou seja pega as notas e joga na media mais estou meio perdido como fazer com trigger alguem pode me dar uma luz? Pode ser com outro exemplo de trigger que faça algo similar apenas para mim ter uma noção! Obrigado CREATE TABLE ALUNO( RA NUMBER(10), N1 NUMBER(4), N2 NUMBER(4), N3 NUMBER(4), MEDIA NUMBER(3,1)); INSERT INTO ALUNO (RA,N1,N2,N3) VALUES (8569542658,10,10,10); INSERT INTO ALUNO (RA,N1,N2,N3) VALUES (9569527658,5,2,10); INSERT INTO ALUNO (RA,N1,N2,N3) VALUES (5565853295,6,2,10); CREATE OR REPLACE FUNCTION T_R( P_RA NUMBER) RETURN VARCHAR2 IS V_RESULTADO VARCHAR2(10);V_N1 NUMBER;V_N2 NUMBER;V_N3 NUMBER;V_MEDIA NUMBER; BEGIN SELECT N1,N2,N3 INTO V_N1,V_N2,V_N3 FROM ALUNO WHERE RA=P_RA; V_MEDIA:=(V_N1+V_N2+V_N3)/3; IF V_MEDIA=6.0 THEN V_RESULTADO:='APROVADO'; ELSE V_RESULTADO:='REPROVADO'; END IF; RETURN V_RESULTADO; END T_R; / CREATE OR REPLACE TRIGGER ATUMEDIA BEFORE UPDATE OF MEDIA ON ALUNO FOR EACH ROW BEGIN INSERT INTO ALUNO SET VALUES(:NEW.V_MEDIA,USER,SYSDATE); END ATUMEDIA; / Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 24, 2012 Atribuir direto a coluna via trigger. CREATE OR REPLACE TRIGGER ATUMEDIA BEFORE UPDATE OF MEDIA ON ALUNO FOR EACH ROW BEGIN :NEW.V_MEDIA := FUNCTION T_R(:NEW.RA); / Compartilhar este post Link para o post Compartilhar em outros sites
Adriano Massaroli 0 Denunciar post Postado Maio 24, 2012 Bom dia JoãoXX, Veja se o exemplo abaixo te ajuda. -- TABELA CREATE TABLE ALUNO ( RA NUMBER(10), N1 NUMBER(4), N2 NUMBER(4), N3 NUMBER(4), MEDIA NUMBER(3,1) ); ------------------------------------------------ -- TRIGGER create or replace trigger TRG_MEDIA_ALUNO before insert or update on ALUNO for each row declare v_total number(5); v_media ALUNO.MEDIA%type; begin v_total := :NEW.N1 + :NEW.N2 + :NEW.N3; v_media := V_TOTAL / 3; :NEW.MEDIA := v_media; end; ------------------------------------------------ --INSERT INSERT INTO ALUNO (RA,N1,N2,N3) VALUES (8569542658,10,10,10); INSERT INTO ALUNO (RA,N1,N2,N3) VALUES (9569527658,5,2,10); INSERT INTO ALUNO (RA,N1,N2,N3) VALUES (5565853295,6,2,10); ------------------------------------------------ -- VALIDA RESULTADO SELECT * FROM ALUNO Adriano Compartilhar este post Link para o post Compartilhar em outros sites