Function Le_empresa que exclui a necessidade de execução da Package pkg_mv2000.Atribui_Empresa()

Citação de Marcos Soares em 07/02/2025, 12:28Olá, pessoal. Compartilhar com vocês uma function que desenvolvi para resolver um problema onde precisava fazer um ETL de uma view que a cada vez que executado era necessário antes executar uma PACKAGE, a famosa dbamv.pkg_mv2000.Atribui_Empresa(cd_multi_empresa). Sem antes executar a PACKAGE, as consultas da view retornavam em branco. Deixo abaixo sintaxe de como deve ser preenchido a consulta.
Primeiramente, crie a function no seu banco de dados. O arquivo está disponível no final da página.
Depois disso, iremos executar a query abaixo, assim irá mostrar o codigo do setor e o sua respectiva empresa, sem necessidade de execução da PACKAGE.SELECT cd_setor, fn_le_empresa(cd_multi_empresa)
FROM setor
WHERE ROWNUM <= 10;Exemplo de execução da Function
Você pode testar a function em outra query que seja necessário a execução da PACKAGE dbamv.pkg_mv2000.Atribui_Empresa. Deixo abaixo link de um relatório que necessita de tal execução.
https://systemti.net/forum/topic/query-relatorio-de-repasse-de-prestadores-r_repasse_medico/
OBS: Necessário incluir um campo cd_multi_empresa que tenha em todos os campos para se evitar faltas de linhas no código.
Deixo em anexo a function para download.
Espero que lhe seja útil.
Olá, pessoal. Compartilhar com vocês uma function que desenvolvi para resolver um problema onde precisava fazer um ETL de uma view que a cada vez que executado era necessário antes executar uma PACKAGE, a famosa dbamv.pkg_mv2000.Atribui_Empresa(cd_multi_empresa). Sem antes executar a PACKAGE, as consultas da view retornavam em branco. Deixo abaixo sintaxe de como deve ser preenchido a consulta.
Primeiramente, crie a function no seu banco de dados. O arquivo está disponível no final da página.
Depois disso, iremos executar a query abaixo, assim irá mostrar o codigo do setor e o sua respectiva empresa, sem necessidade de execução da PACKAGE.
SELECT cd_setor, fn_le_empresa(cd_multi_empresa)
FROM setor
WHERE ROWNUM <= 10;
Exemplo de execução da Function
Você pode testar a function em outra query que seja necessário a execução da PACKAGE dbamv.pkg_mv2000.Atribui_Empresa. Deixo abaixo link de um relatório que necessita de tal execução.
https://systemti.net/forum/topic/query-relatorio-de-repasse-de-prestadores-r_repasse_medico/
OBS: Necessário incluir um campo cd_multi_empresa que tenha em todos os campos para se evitar faltas de linhas no código.
Deixo em anexo a function para download.
Espero que lhe seja útil.
Arquivos enviados:
- Você precisa fazer o login para ter acesso aos uploads.

Citação de Marcos Soares em 10/02/2025, 17:59Deixo abaixo uma view nativa do ambiente MV onde é possível inserir a function.
View: DBAMV.V_FNRM_REPASSE_GERADOInseri a linha abaixo nos diversos WHERE da query.
..
dbamv.reg_fat reg..
where
1=1
AND mer.cd_multi_empresa_rep = fn_le_empresa(reg.cd_multi_empresa)
Oriento criar uma nova versão da VIEW, pois tal alteração pode impactar no relatório nativo do SOULMV.
Espero que lhe seja útil.
Deixo abaixo uma view nativa do ambiente MV onde é possível inserir a function.
View: DBAMV.V_FNRM_REPASSE_GERADO
Inseri a linha abaixo nos diversos WHERE da query.
..
dbamv.reg_fat reg..
where
1=1
AND mer.cd_multi_empresa_rep = fn_le_empresa(reg.cd_multi_empresa)
Oriento criar uma nova versão da VIEW, pois tal alteração pode impactar no relatório nativo do SOULMV.
Espero que lhe seja útil.

Citação de Marcos Soares em 26/02/2025, 14:06Atualizado linha implementada do segundo post.
Atualizado linha implementada do segundo post.