Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE relatorio_salarios_depto IS
- v_tabela_relatorios NUMBER;
- BEGIN
- -- procura a tabela no catálogo
- SELECT
- COUNT(*) INTO v_tabela_relatorios
- FROM
- user_tables
- WHERE
- table_name = UPPER('relatorio_salarios');
- -- verifica se encontrou
- IF v_tabela_relatorios = 1 THEN
- -- apaga se existir
- EXECUTE IMMEDIATE 'drop table relatorio_salarios';
- END IF;
- -- cria a tabela
- EXECUTE IMMEDIATE 'create table relatorio_salarios (departamento varchar2(15), soma_salarios number)';
- -- calcula a soma dos salários por departamento
- FOR r_soma IN (
- SELECT
- SUM(f.salario) soma_salarios,
- d.nome_departamento departamento
- FROM
- funcionario f
- inner join departamento d
- ON d.id_departamento = f.id_departamento
- GROUP BY
- d.nome_departamento
- ) LOOP
- -- insere na tabela de relatório (como a tabela é criada dinamicamente dentro da procedure devemos usar 'execute immediate')
- EXECUTE IMMEDIATE 'insert into relatorio_salarios(departamento, soma_salarios) values (:departamento, :soma_salarios)' using r_soma.departamento, r_soma.soma_salarios;
- END LOOP;
- DBMS_OUTPUT.put_line('Relatório gerado na tabela > relatorio_salarios <');
- END;
- /
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement