Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Exercício sobre cursores/procedures

$
0
0

Boa noite a todos.

 

Bom, agora tenho uma lista de exercícios de PL/SQL para fazer, e para variar, preciso de ajuda.

 

Bom, o exercício pede:   Utilizando cursores, crie um procedimento que atualize o salário dos funcionários quando passado seu código e o percentual de aumento (se diretoria 20% e se segundo escalão 10%);

 

Meu código ficou assim:

SET SERVEROUTPUT ON
ACCEPT V_CODFUNC PROMPT 'CODIGO DO FUNCIONARIO'
DECLARE
  CURSOR CUR_EX5
  IS
    SELECT CAR_CODIGO FROM tb_cargo;
  V_CARGO tb_cargo%ROWTYPE;
BEGIN
  OPEN CUR_EX5;
  LOOP
    FETCH CUR_EX5 INTO V_CARGO;
    DBMS_OUTPUT.PUT_LINE(V_CARGO.CAR_DESCRICAO);
    
    CASE WHEN UPPER(V_CARGO.car_descricao) LIKE '%DIRETORIA%'  THEN
      UPDATE tb_cargo
      SET car_salariobase = V_CARGO.car_salariobase + (V_CARGO.car_salariobase * 0.2) WHERE CAR_CODIGO =V_CODFUNC;
      DBMS_OUTPUT.PUT_LINE(V_CARGO.car_salariobase);
      
      ELSE
        UPDATE tb_cargo
        SET car_salariobase = V_CARGO.car_salariobase + (V_CARGO.car_salariobase * 0.1) WHERE CAR_CODIGO =V_CODFUNC;
        DBMS_OUTPUT.PUT_LINE(V_CARGO.car_salariobase);
      END CASE;
    
    EXIT
    WHEN CUR_EX5%NOTFOUND;
     END LOOP;
  END;

Está dando que o identificado V_CODFUNC é inválido (mesmo eu digitando um código de funcionário existente), daí acaba que não faz nada.

Alguém sabe onde está o erro? Acho que a lógica está certa né?

Valeu, abraço!

 


Viewing all articles
Browse latest Browse all 14190