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!