Ir para conteúdo

Arquivado

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

Wajabed

Exercício sobre cursores/procedures

Recommended Posts

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!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tenho outro exercício aqui que estou com dificuldade.

Tenho uma tabela de clientes, e uma de funcionários, e tenho que fazer uma função (já tenho ela, peguei pronta) que valide o CPF. Mas como eu aplico essa função para avaliar o CPF de cada funcionário e de cada cliente?

Obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende , em que escopo será aplicado esta função ?

 

exemplos de uso :

 

em um sql

select val_cpf(cliente.cpf)
from cliente

Em um plsql

If val_cpf(cliente.cpf) = 0 then
  raise_application_erro(-200001,'cpf bichado ');
end if;

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.