Criei uma procedure que recebe como parametro apenas o caminho onde os arquivos deveriam ser gerados. A principio seria simples, são duas queries onde a segunda trabalha com o resultado da primeira.
A primeira query traz o código de todos os perfis existentes na base e cria um arquivo excel para cada código, a segunda query pegaria o codigo de cada perfil e buscaria todas as funções vinculadas a ele jogando o reultado para o excel correspondente. Porém isso não ocorre, e a planilha sai com a fomatação desconfigurada. Segue o codig que utilizei:
create or replace procedure TS.SEGLOG_REVALIDA_PERFIS(p_diretorio in VARCHAR) is
Pergunta
Sergiolfj
Criei uma procedure que recebe como parametro apenas o caminho onde os arquivos deveriam ser gerados. A principio seria simples, são duas queries onde a segunda trabalha com o resultado da primeira.
A primeira query traz o código de todos os perfis existentes na base e cria um arquivo excel para cada código, a segunda query pegaria o codigo de cada perfil e buscaria todas as funções vinculadas a ele jogando o reultado para o excel correspondente. Porém isso não ocorre, e a planilha sai com a fomatação desconfigurada. Segue o codig que utilizei:
create or replace procedure TS.SEGLOG_REVALIDA_PERFIS(p_diretorio in VARCHAR) is
v_caminho varchar2(2000);
v_data_ini_aux varchar2(10);
v_nome_arquivo1 varchar2(100);
v_diretorio varchar2(1000);
simprime varchar(1);
-- Pacote para trabalhar com arquivo
fhandler utl_file.file_type;
begin
simprime := 'S';
v_diretorio := p_diretorio;
v_data_ini_aux := to_char(sysdate , 'yyyymmdd');
---------------------------------------------
-- LISTA PERFIS DO SISTEMA -
--------------------------------------------
FOR PERFIL_DATA IN (SELECT COD_PERFIL
FROM TS_SEC.PERFIL)
LOOP
v_nome_arquivo1 := PERFIL_DATA.COD_PERFIL || '.csv';
fhandler := utl_file.fopen(v_diretorio, v_nome_arquivo1, 'w');
---------------------------------------------
-- LISTA AS FUNCOES DE CADA PERFIL -
--------------------------------------------
begin
for c_cursor in (SELECT AU.COD_FUNCAO
, MO.NOM_MODULO
, FU.TXT_TITULO_FUNCAO
, AU.IND_INCLUSAO
, AU.IND_ATUALIZACAO
, AU.IND_EXCLUSAO
, AU.IND_CONSULTA
, AU.IND_ESPECIAL
, AU.IND_EXECUCAO
FROM TS_SEC.AUTORIZACAO_PERFIL AU
, TS_SEC.FUNCAO FU
, TS_SEC.MODULO MO
WHERE AU.COD_PERFIL = PERFIL_DATA.COD_PERFIL
AND FU.COD_FUNCAO = AU.COD_FUNCAO
AND AU.COD_MODULO = MO.COD_MODULO
AND FU.COD_MODULO = MO.COD_MODULO)
loop
if simprime = 'S'
then
utl_file.put_line(fhandler, '<html>');
utl_file.put_line(fhandler, '<style type="text/css">');
utl_file.put_line(fhandler, ' .FmtTexto {mso-number-format:\@}');
utl_file.put_line(fhandler, '</style>');
utl_file.put_line(fhandler, '<body >');
utl_file.put_line(fhandler, '<table width="100%" border="1" cellspacing="0" cellpadding="0">');
utl_file.put_line(fhandler, '<tr>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>CODIGO_FUNCAO</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>NOME_MODULO</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>TITULO_FUNCAO</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>INCLUI</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>ATUALIZA</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>EXCLUI</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>CONSULTA</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>FUNCAO_ESPECIAL</b></td>');
utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>EXECUTA</b></td>');
utl_file.put_line(fhandler, '</tr>');
simprime := 'N';
end if;
utl_file.put_line(fhandler, '<tr>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.cod_funcao || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.nom_modulo || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.txt_titulo_funcao || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_inclusao || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_atualizacao || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_exclusao || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_consulta || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_especial || '</td>');
utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_execucao || '</td>');
utl_file.put_line(fhandler, '</tr>');
end loop;
end;
utl_file.put_line(fhandler, ' </body></html>');
utl_file.fclose(fhandler);
end loop;
end;
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.