0
I asked the management company of our system to change the code of some neighborhoods of the system, the same carried out such change, now I need to change the code of other neighborhoods that are in the system, I know such change is delicate and that neighborhoods are linked to several tables and there are numerous triggers monitoring such tables.
However I have the code that was used to change some neighborhoods, and the same informs which triggers should be disabled and which ones should receive Update. The problem is that I don’t know how to pass the value to the parameters of Procedure via Function.
CREATE OR REPLACE PROCEDURE Sp_Troca_Bairros2(anBairroAtual in NUMBER, anBairroNovo in NUMBER, anRegiaoAtual in NUMBER)
AS
lsBai varchar2(1);
lnIdBairro number(9);
lnIdRegiao number(9);
rec_bairro bairros%rowtype;
BEGIN
-- TESTA BAIRRO ATUAL
begin
select 'S', bairros.idregiao, bairros.idbairro
into lsBai, lnIdRegiao, lnIdBairro
from bairros
where bairros.idbairro = anBairroAtual
and bairros.idregiao = anRegiaoAtual;
exception
when no_data_found then
lsBai := 'N';
end;
if lsBai = 'N' then
raise_application_error(-20000, 'O Bairro '||anBairroAtual||' da Região '||anRegiaoAtual||', não pôde ser localizada, portanto não será alterado.');
return;
end if;
-- TESTA SE BAIRRO JÁ EXISTE
begin
select 'S'
into lsBai
from bairros
where bairros.idbairro = anBairroAtual
and bairros.idregiao = anRegiaoAtual;
exception
when no_data_found then
lsBai := 'N';
end;
if lsBai = 'S' then
EXECUTE IMMEDIATE 'alter table ANALISE_LEITURA disable all triggers';
EXECUTE IMMEDIATE 'alter table BAIRROS_LOCALIDADES disable all triggers';
EXECUTE IMMEDIATE 'alter table BOLETIM_CADASTRO_AT disable all triggers';
EXECUTE IMMEDIATE 'alter table BOLETIM_VISTORIA disable all triggers';
EXECUTE IMMEDIATE 'alter table CALCULO_DADOS disable all triggers';
EXECUTE IMMEDIATE 'alter table CARGASCOLETORROTAS disable all triggers';
EXECUTE IMMEDIATE 'alter table CONFIG_ENDERECO disable all triggers';
EXECUTE IMMEDIATE 'alter table CONSUMIDOR disable all triggers';
EXECUTE IMMEDIATE 'alter table CRM_PEDIDO_LIGACAO disable all triggers';
EXECUTE IMMEDIATE 'alter table CRM_SOLICITACOES disable all triggers';
EXECUTE IMMEDIATE 'alter table DECFEC_SOMA_UC disable all triggers';
EXECUTE IMMEDIATE 'alter table EXPFAT_LOTE disable all triggers';
EXECUTE IMMEDIATE 'alter table GRUPO_IMPRESSAO disable all triggers';
EXECUTE IMMEDIATE 'alter table LIGACAO_PROVISORIA disable all triggers';
EXECUTE IMMEDIATE 'alter table NOTAS_SERVICO disable all triggers';
EXECUTE IMMEDIATE 'alter table PONTOSC disable all triggers';
EXECUTE IMMEDIATE 'alter table PRJ_PONTOSC disable all triggers';
EXECUTE IMMEDIATE 'alter table PROJETOS_PC disable all triggers';
EXECUTE IMMEDIATE 'alter table RUAS disable all triggers';
EXECUTE IMMEDIATE 'alter table SETORES_CONFIG disable all triggers';
EXECUTE IMMEDIATE 'alter table SOLICITACOES disable all triggers';
EXECUTE IMMEDIATE 'alter table SOL_RETIF_SOLICITACOES disable all triggers';
EXECUTE IMMEDIATE 'alter table UC disable all triggers';
EXECUTE IMMEDIATE 'alter table AGRUPA_CONS disable all triggers';
EXECUTE IMMEDIATE 'alter table BOLETIM_CADASTRO disable all triggers';
EXECUTE IMMEDIATE 'alter table CALC_INDICE_DECFEC_EQUIPTO disable all triggers';
EXECUTE IMMEDIATE 'alter table CALENDARIO_LEITURA_RGBART disable all triggers';
EXECUTE IMMEDIATE 'alter table CAMADA_LIMITES disable all triggers';
EXECUTE IMMEDIATE 'alter table CGGRUPO_LEITURISTA_MES_UC disable all triggers';
EXECUTE IMMEDIATE 'alter table COD_BAIRROS disable all triggers';
EXECUTE IMMEDIATE 'alter table CONSUMIDOR_RECAD disable all triggers';
EXECUTE IMMEDIATE 'alter table IMPORTA_CONSUMIDOR disable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_PONTOSC disable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_PONTOSC_CEN disable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_SUBESTACOES disable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_SUBESTACOES_CEN disable all triggers';
EXECUTE IMMEDIATE 'alter table PRJ_PAR_PONTOSC disable all triggers';
EXECUTE IMMEDIATE 'alter table PRJ_PAR_PONTOSC_ORIG disable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_REMESSA_CONSUMIDOR disable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_REMESSA_UC disable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_RETORNO_CONSUMIDOR disable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_RETORNO_UC_CONS disable all triggers';
EXECUTE IMMEDIATE 'alter table SUBESTACOES disable all triggers';
EXECUTE IMMEDIATE 'alter table UC_RECAD disable all triggers';
EXECUTE IMMEDIATE 'alter table UC_TRCOD disable all triggers';
update ANALISE_LEITURA set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update BAIRROS_LOCALIDADES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update BOLETIM_CADASTRO_AT set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update BOLETIM_VISTORIA set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CALCULO_DADOS set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CARGASCOLETORROTAS set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CONFIG_ENDERECO set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CONSUMIDOR set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CRM_PEDIDO_LIGACAO set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CRM_SOLICITACOES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update DECFEC_SOMA_UC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update EXPFAT_LOTE set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update GRUPO_IMPRESSAO set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update LIGACAO_PROVISORIA set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update NOTAS_SERVICO set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PONTOSC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PRJ_PONTOSC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PROJETOS_PC set IDLOGRADOURO = anBairroNovo where IDLOGRADOURO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update RUAS set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update SETORES_CONFIG set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update SOLICITACOES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update SOL_RETIF_SOLICITACOES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update UC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update AGRUPA_CONS set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update BOLETIM_CADASTRO set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CALC_INDICE_DECFEC_EQUIPTO set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CALENDARIO_LEITURA_RGBART set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CAMADA_LIMITES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CGGRUPO_LEITURISTA_MES_UC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update COD_BAIRROS set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CONSUMIDOR_RECAD set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update CONSUMIDOR_RECAD set IDBAIRRO_ant = anBairroNovo where IDBAIRRO_ant = anBairroAtual and IDREGIAO = anRegiaoAtual;
update IMPORTA_CONSUMIDOR set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PLN_PONTOSC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PLN_PONTOSC_CEN set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PLN_SUBESTACOES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PLN_SUBESTACOES_CEN set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PRJ_PAR_PONTOSC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update PRJ_PAR_PONTOSC_ORIG set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update RECAD_REMESSA_CONSUMIDOR set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update RECAD_REMESSA_UC set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update RECAD_RETORNO_CONSUMIDOR set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update RECAD_RETORNO_UC_CONS set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update SUBESTACOES set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update UC_RECAD set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update UC_RECAD set IDBAIRRO_ANT = anBairroNovo where IDBAIRRO_ANT = anBairroAtual and IDREGIAO = anRegiaoAtual;
update UC_TRCOD set IDBAIRRO = anBairroNovo where IDBAIRRO = anBairroAtual and IDREGIAO = anRegiaoAtual;
update UC_TRCOD set IDBAIRRO_ANT = anBairroNovo where IDBAIRRO_ANT = anBairroAtual and IDREGIAO = anRegiaoAtual;
COMMIT;
EXECUTE IMMEDIATE 'alter table ANALISE_LEITURA enable all triggers';
EXECUTE IMMEDIATE 'alter table BAIRROS_LOCALIDADES enable all triggers';
EXECUTE IMMEDIATE 'alter table BOLETIM_CADASTRO_AT enable all triggers';
EXECUTE IMMEDIATE 'alter table BOLETIM_VISTORIA enable all triggers';
EXECUTE IMMEDIATE 'alter table CALCULO_DADOS enable all triggers';
EXECUTE IMMEDIATE 'alter table CARGASCOLETORROTAS enable all triggers';
EXECUTE IMMEDIATE 'alter table CONFIG_ENDERECO enable all triggers';
EXECUTE IMMEDIATE 'alter table CONSUMIDOR enable all triggers';
EXECUTE IMMEDIATE 'alter table CRM_PEDIDO_LIGACAO enable all triggers';
EXECUTE IMMEDIATE 'alter table CRM_SOLICITACOES enable all triggers';
EXECUTE IMMEDIATE 'alter table DECFEC_SOMA_UC enable all triggers';
EXECUTE IMMEDIATE 'alter table EXPFAT_LOTE enable all triggers';
EXECUTE IMMEDIATE 'alter table GRUPO_IMPRESSAO enable all triggers';
EXECUTE IMMEDIATE 'alter table LIGACAO_PROVISORIA enable all triggers';
EXECUTE IMMEDIATE 'alter table NOTAS_SERVICO enable all triggers';
EXECUTE IMMEDIATE 'alter table PONTOSC enable all triggers';
EXECUTE IMMEDIATE 'alter table PRJ_PONTOSC enable all triggers';
EXECUTE IMMEDIATE 'alter table PROJETOS_PC enable all triggers';
EXECUTE IMMEDIATE 'alter table RUAS enable all triggers';
EXECUTE IMMEDIATE 'alter table SETORES_CONFIG enable all triggers';
EXECUTE IMMEDIATE 'alter table SOLICITACOES enable all triggers';
EXECUTE IMMEDIATE 'alter table SOL_RETIF_SOLICITACOES enable all triggers';
EXECUTE IMMEDIATE 'alter table UC enable all triggers';
EXECUTE IMMEDIATE 'alter table AGRUPA_CONS enable all triggers';
EXECUTE IMMEDIATE 'alter table BOLETIM_CADASTRO enable all triggers';
EXECUTE IMMEDIATE 'alter table CALC_INDICE_DECFEC_EQUIPTO enable all triggers';
EXECUTE IMMEDIATE 'alter table CALENDARIO_LEITURA_RGBART enable all triggers';
EXECUTE IMMEDIATE 'alter table CAMADA_LIMITES enable all triggers';
EXECUTE IMMEDIATE 'alter table CGGRUPO_LEITURISTA_MES_UC enable all triggers';
EXECUTE IMMEDIATE 'alter table COD_BAIRROS enable all triggers';
EXECUTE IMMEDIATE 'alter table CONSUMIDOR_RECAD enable all triggers';
EXECUTE IMMEDIATE 'alter table IMPORTA_CONSUMIDOR enable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_PONTOSC enable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_PONTOSC_CEN enable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_SUBESTACOES enable all triggers';
EXECUTE IMMEDIATE 'alter table PLN_SUBESTACOES_CEN enable all triggers';
EXECUTE IMMEDIATE 'alter table PRJ_PAR_PONTOSC enable all triggers';
EXECUTE IMMEDIATE 'alter table PRJ_PAR_PONTOSC_ORIG enable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_REMESSA_CONSUMIDOR enable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_REMESSA_UC enable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_RETORNO_CONSUMIDOR enable all triggers';
EXECUTE IMMEDIATE 'alter table RECAD_RETORNO_UC_CONS enable all triggers';
EXECUTE IMMEDIATE 'alter table SUBESTACOES enable all triggers';
EXECUTE IMMEDIATE 'alter table UC_RECAD enable all triggers';
EXECUTE IMMEDIATE 'alter table UC_TRCOD enable all triggers';
--raise_application_error(-20000,'SÓ FALTA DELETAR');
begin
delete
from bairros
where bairros.idbairro = anBairroAtual
and bairros.idregiao = anRegiaoAtual;
end;
commit;
return;
end if;
END;
Begin Sp_troca_bairros2(anBairroAtual => 5, anBairroNovo =>380, anRegiaoAtual =>5); End;
– Danilo Freitas