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'.

  • (edição externa)