Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #79876
    caqsouza
    Participante

      Tenho 4 tabelas: funcionario,departamento, projeto e participa com todos os relacionamentos feitos e funcionando. Preciso criar 2 STORED PROCEDURES e 2 TRIGGERS.

      1ª STORED PROCEDURE = receba como parametro dois valores de porcentagem e aumente com o primeiro valor o salario os funcionarios nascidos antes de 1972 e com o segundo valor o salario dos funcionariosnascidos em 1972 ou posterior.

      2ª STORED PROCEDURE = some as horas trabalhadas de cada projeto e atualize a duração dos mesmos(em dias) e trate as exceções.

      1ª TRIGGER = quando houver uma exclusão de projeto, exclua todas as participações no mesmo.

      2ª TRIGGER = não permita a redução do salario de um funcionario.

      Agradeço a todos que possam me ajudar.

      #79896
      caqsouza
      Participante

        — QUESTÃO 01 —

        CREATE OR REPLACE PROCEDURE promocaofunc (a_1972 in number, p_1972 in number)
        IS
        BEGIN

        UPDATE funcionario
        SET salario = salario * (1 + a_1972/100)
        WHERE EXTRACT(year FROM data_nascimento) = 1972;
        

        END promocaofunc;

                -- QUESTÃO 02 --
        

        CREATE OR REPLACE PROCEDURE atualizaprojeto???????????????????????
        IS
        BEGIN

        UPDATE projetos
        SET duracao = (SELECT SUM(horas_trabalhadas)/8 
                       FROM participa)
        WHERE projeto.codigo = participa.codigo_projeto;
        

        END atualizaprojeto;

                -- QUESTÃO 03 --
        

        CREATE OR REPLACE TRIGGER tr_projeto
        BEFORE DELETE ON projeto
        FOR EACH ROW

        BEGIN

         DELETE FROM participa
         WHERE participa.codigo_projeto =  :o ld.codigo;
        

        END tr_projeto;

                -- QUESTÃO 04 --
        

        CREATE OR REPLACE TRIGGER tr_funcionario
        BEFORE UPDATE ON funcionario
        FOR EACH ROW

        BEGIN
        
              SELECT salario
          INTO :NEW.salario
          FROM funcionario
        
          IF :NEW.salario < :OLD.salario THEN
            RAISE_APPLICATION_ERROR (-200,
            ' O novo salário não pode ser maior que o salário' || OLD.salario);
          END IF;
        

        END tr_funcionario;

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress