Exclusão de relatórios C e substituição por P
Para realizar a exclusão do relatório C e substituir por um P é necessário executar os seguintes scripts no banco de dados caso ainda não foi executado.
Script Oracle
No banco REP (Substituir “BASE_ICO” pelo nome da base ICO)
GRANT ALL ON TB_REL_RELATORIO TO BASE_ICO; GRANT ALL ON TB_REL_ESTAT_EVT_PARAMS TO BASE_ICO; GRANT ALL ON TB_REL_ESTAT_EVT TO BASE_ICO; GRANT ALL ON TB_REL_ESTAT_AUT TO BASE_ICO; GRANT ALL ON TB_REL_RELATORIO_MODULO TO BASE_ICO; GRANT ALL ON TB_REL_RELATORIO TO BASE_ICO;
No banco SEC (Substituir “BASE_ICO” pelo nome da base ICO)
GRANT ALL ON TB_OPCAO_MENU TO BASE_ICO;
Criação da procedure (Substituir “BASE_REP” pelo nome da base de relatório e “BASE_SEC” pela base Security)
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 BASE_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 BASE_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 BASE_REP.TB_REL_ESTAT_EVT_PARAMS WHERE REP_REEID IN (SELECT REE_ID FROM BASE_REP.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM BASE_REP.TB_REL_ESTAT_AUT WHERE REA_RELID = V_RELID)); DELETE FROM BASE_REP.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM BASE_REP.TB_REL_ESTAT_AUT WHERE REA_RELID = V_RELID); DELETE FROM BASE_REP.TB_REL_ESTAT_AUT WHERE REA_RELID = V_RELID; DELETE FROM BASE_REP.TB_REL_RELATORIO_MODULO WHERE RRM_RELID = V_RELID; DELETE FROM BASE_REP.TB_REL_RELATORIO WHERE REL_ID = V_RELID; END; END IF; END;
Script SQLServer
Criação da procedure (Substituir “BASE_REP” pelo nome da base de relatório e “BASE_SEC” pela base Security)
/* <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 BASE_REP.DBO.TB_REL_RELATORIO WHERE REL_CODTEL LIKE '%'+@C+'') UPDATE BASE_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 BASE_REP.DBO.TB_REL_ESTAT_EVT_PARAMS WHERE REP_REEID IN (SELECT REE_ID FROM BASE_REP.DBO.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM BASE_REP.DBO.TB_REL_ESTAT_AUT WHERE REA_RELID = @RELID)) DELETE FROM BASE_REP.DBO.TB_REL_ESTAT_EVT WHERE REE_REAID IN (SELECT REA_ID FROM BASE_REP.DBO.TB_REL_ESTAT_AUT WHERE REA_RELID = @RELID) DELETE FROM BASE_REP.DBO.TB_REL_ESTAT_AUT WHERE REA_RELID = @RELID DELETE FROM BASE_REP.DBO.TB_REL_RELATORIO_MODULO WHERE RRM_RELID = @RELID DELETE FROM BASE_REP.DBO.TB_REL_RELATORIO WHERE REL_ID = @RELID END GO
Para executar a procedure após a criação, basta executar o comando na base ICO: exec SP_SUBSTITUI_RELATORIO 'C','P'.