Advertisement
Guest User

Exercicio PLSQL

a guest
Nov 20th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.50 KB | None | 0 0
  1. [17:47, 20/11/2017] +55 11 99850-9473:
  2. [17:48, 20/11/2017] +55 11 99850-9473: CREATE TABLE cargo (cd_cargo NUMBER(3) primary key,
  3.                 nm_cargo VARCHAR(10),
  4.                 salario NUMBER(10,2));
  5.  
  6.  
  7. BEGIN
  8. INSERT INTO cargo VALUES (1,'DBA',18500);
  9. INSERT INTO cargo VALUES (2,'Analista',7200);
  10. INSERT INTO cargo VALUES (3,'Estagiario',2500);
  11. END;
  12.  
  13. CREATE TABLE funcionario (cd_fun NUMBER(3) primary key,
  14.                     nm_fun VARCHAR(10),
  15.                     cargo_fk references cargo);
  16.  
  17. BEGIN
  18. INSERT INTO funcionario VALUES (10,'Marcel',1);
  19. INSERT INTO funcionario VALUES (20,'Silvania',1);
  20. INSERT INTO funcionario VALUES (30,'Ana',2);
  21. INSERT INTO funcionario VALUES (40,'Carlos',3);
  22. END;
  23.  
  24.  
  25.  
  26.  
  27. CREATE OR REPLACE PROCEDURE calculo IS CURSOR c_aumentosalario
  28. IS SELECT salario FROM cargo;
  29. v_naotrab NUMBER(5,2) := 2.00 ; --Insira a quantidade de dias não trabalhados
  30. v_diasmes NUMBER(5,2) := 30 ; --Insira a quantidade de dias no mês
  31. BEGIN
  32. FOR v_sal IN c_aumentosalario
  33.  
  34.     LOOP
  35.         IF v_sal.salario <= 2500 THEN
  36.         UPDATE cargo SET salario = salario * 1.125 WHERE salario = v_sal.salario;
  37.         ELSIF v_sal.salario > 2500 AND v_sal.salario <= 7800 THEN
  38.         UPDATE cargo SET salario = salario * 1.08 WHERE salario = v_sal.salario;
  39.         ELSIF v_sal.salario > 7800 AND v_sal.salario <= 15000 THEN
  40.         UPDATE cargo SET salario = salario * 1.025 WHERE salario = v_sal.salario;
  41.         ELSIF v_sal.salario > 15000 THEN
  42.         UPDATE cargo SET salario = salario * 1 WHERE salario = v_sal.salario;
  43.         END IF;
  44.     COMMIT;
  45.     END LOOP;
  46.         IF v_naotrab < ((v_diasmes/100) * 10) THEN
  47.         UPDATE cargo SET salario = salario + 100;
  48.    END IF;
  49. END calculo;
  50.  
  51. DECLARE
  52. CURSOR c_display IS SELECT f.cd_fun, f.nm_fun, f.cargo_fk, c.salario, c.nm_cargo, c.cd_cargo FROM funcionario f inner join cargo c ON f.cargo_fk = c.cd_cargo;
  53. v_sal cargo.salario%TYPE;
  54. v_func funcionario.nm_fun%TYPE;
  55. v_salantigo NUMBER(7,2);
  56.  
  57.     BEGIN
  58.         FOR v_cargos IN c_display
  59.     LOOP
  60.         DBMS_OUTPUT.PUT_LINE('Nome: '||v_cargos.nm_fun||' - Salário Antigo: R$ '||v_cargos.salario);
  61.     END LOOP;
  62.  
  63.     calculo;
  64.      DBMS_OUTPUT.PUT_LINE('____________________________________________________________________');
  65.     FOR v_display IN c_display
  66.     LOOP
  67.         DBMS_OUTPUT.PUT_LINE('Nome: '||v_display.nm_fun||' - Salário Novo R$: '||v_display.salario);
  68.         END LOOP;
  69. END;
  70.  
  71.  
  72.  
  73.  
  74.  
  75.   SELECT * FROM cargo;
  76.   SELECT * FROM funcionario;
  77.  
  78.  
  79. DROP TABLE funcionario;
  80. DROP TABLE cargo;
  81. DROP PROCEDURE calculo;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement