Procedures para troca de tipo de relatórios
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')