Utilizo o Oracle 9.2, e o SQL PLUS
Preciso fazer um procedimento usando cursores explicitos que pega os percentuais de comissao de cada empregado, arredonda seus valores e coloca uma estrela "*" para cada 1% de comissao do empregado.
abaixo segue o codigo:
CREATE OR REPLACE
PROCEDURE ATRIBUI_ESTRELAS
IS
V_ESTRELAS EMPREGADOS.ESTRELAS%TYPE := NULL;
CURSOR EMP_CURSOR IS
SELECT NVL(ROUND(PERC_COMISSAO), 0) COMISSAO
FROM EMPREGADOS
FOR UPDATE;
BEGIN
FOR EMP_RECORD IN EMP_CURSOR LOOP
FOR I IN EMP_RECORD.COMISSAO LOOP
V_ESTRELAS := V_ESTRELAS || '*';
END LOOP;
UPDATE EMPREGADOS
SET ESTRELAS = V_ESTRELAS
WHERE CURRENT OF EMP_CURSOR;
END LOOP;
COMMIT;
END;
CREATE TABLE EMPREGADOS
(NUMERO NUMBER(4)
CONSTRAINT EMPREGADOS_NUMERO_PK PRIMARY KEY,
NOME VARCHAR2(10),
SOBRENOME VARCHAR2(10),
CPF CHAR(11)
CONSTRAINT EMPREGADOS_CPF_UK UNIQUE,
CARGO VARCHAR2(10),
NUM_SUPERVISOR NUMBER(4)
CONSTRAINT EMP_EMP_NUM_SUPERVISOR_FK
REFERENCES EMPREGADOS (NUMERO),
DT_ADMISSAO DATE,
SALARIO NUMBER(7,2),
PERC_COMISSAO NUMBER(4,2)
CONSTRAINT EMPREGADOS_PERC_COMISSAO_CK
CHECK (PERC_COMISSAO IN (10, 12.5, 15, 17.5, 20)),
NUMERO_DEPT NUMBER(2)
CONSTRAINT EMPREG_DEPARTAMENTOS_NUMERO_FK
REFERENCES DEPARTAMENTOS (NUMERO));
ALTER TABLE EMPREGADOS
ADD ESTRELAS VARCHAR2(30);