Os comandos que serão executados automaticamente durante a atualização são:

ORACLE:
 
CREATE OR REPLACE PROCEDURE SP_SUBSTITUI_RELATORIO
(v_C IN VARCHAR2,
v_P IN VARCHAR2)
AS
 
V_RELID NUMBER(10,0);
 
BEGIN
  BEGIN
    SELECT REL_ID INTO V_RELID FROM QUA_PADRAO_20200402_REP.TB_REL_RELATORIO WHERE REL_CODTEL = v_C;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    V_RELID := 0;
  END;
 
IF V_RELID > 0 THEN 
BEGIN
 
  UPDATE QUA_UNIDAVI_20200206_SEC.TB_OPCAO_MENU SET OME_ACTION =  REPLACE(OME_ACTION, v_C, v_P), OME_CODRELATORIO = CASE WHEN OME_CODRELATORIO = v_C THEN v_P ELSE OME_CODRELATORIO END
  WHERE OME_ACTION LIKE '%'||v_C||'';
 
  DELETE FROM QUA_PADRAO_20200402_REP.TB_REL_ESTAT_EVT_PARAMS WHERE REP_REEID IN (SELECT REE_ID FROM QUA_PADRAO_20200402_REP.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM QUA_PADRAO_20200402_REP.TB_REL_ESTAT_AUT WHERE REA_RELID = V_RELID));
  DELETE FROM QUA_PADRAO_20200402_REP.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM QUA_PADRAO_20200402_REP.TB_REL_ESTAT_AUT WHERE REA_RELID = V_RELID);
  DELETE FROM QUA_PADRAO_20200402_REP.TB_REL_ESTAT_AUT WHERE REA_RELID = V_RELID;
  DELETE FROM QUA_PADRAO_20200402_REP.TB_REL_RELATORIO_MODULO WHERE RRM_RELID = V_RELID;
  DELETE FROM QUA_PADRAO_20200402_REP.TB_REL_RELATORIO WHERE REL_ID = V_RELID;
 
END;
END IF;
END;


MSSQL:
 
/****** Object:  StoredProcedure [dbo].[SP_SUBSTITUI_RELATORIO] ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
/*
<doc>
<desc>Altera relatório C pelo P no security e exclui da Base de relatórios</desc>
<params>
<param name="@C" desc="Código do Relatório C" req="S" />
<param name="@P" desc="Código do Relatório P" req="S" />
</params>
</doc>
*/
 
CREATE PROCEDURE [dbo].[SP_SUBSTITUI_RELATORIO] @C VARCHAR(10),  @P VARCHAR(10) AS
BEGIN
DECLARE @RELID INT = (SELECT REL_ID FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_RELATORIO WHERE REL_CODTEL LIKE '%'+@C+'')
 
UPDATE SERV_MODULAR_20200528_SEC.DBO.TB_OPCAO_MENU SET OME_ACTION =  REPLACE(OME_ACTION, @C, @P), OME_CODRELATORIO = CASE WHEN OME_CODRELATORIO = @C THEN @P ELSE OME_CODRELATORIO END
WHERE OME_ACTION LIKE '%'+@C+''
 
DELETE FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_ESTAT_EVT_PARAMS WHERE REP_REEID IN (SELECT REE_ID FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_ESTAT_AUT WHERE REA_RELID = @RELID))
DELETE FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_ESTAT_AUT WHERE REA_RELID = @RELID)
DELETE FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_ESTAT_AUT WHERE REA_RELID = @RELID
DELETE FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_RELATORIO_MODULO WHERE RRM_RELID = @RELID
DELETE FROM SERV_MODULAR_20200528_REP.DBO.TB_REL_RELATORIO WHERE REL_ID = @RELID
END
 
GO


Observação: Nestes exemplos, utilizamos bases de testes para demonstrar como será feito, como por exemplo, “SERV_MODULAR_20200528_REP” e “QUA_PADRAO_20200402_REP”, porém durante a atualização no cliente será trocado automaticamente para o banco de dados do mesmo.

Portanto, quando um relatório passar pela equipe de serviços e for enviado para o cliente, deverá ser rodado os seguintes comandos no banco de dados ICO, para atualização e troca do tipo “C” para o tipo “P”:

MSSQL:
 
EXEC SP_SUBSTITUI_RELATORIO 'inserir código do relatório antigo, do tipo C', 'inserir código do relatório novo, do tipo P'
ORACLE:
 
EXEC SP_SUBSTITUI_RELATORIO ('inserir código do relatório antigo, do tipo C', 'inserir código do relatório novo, do tipo P')
  • (edição externa)