Excluindo Objetos XML Publisher (DT/DD)

Pessoal, boa noite!

Deixo aqui uma dica para aqueles que querem facilitar a exclusão do Data Template / Data Definition referente à um Relatório XML Publisher, por exemplo.

Basta executar o script abaixo, alterando os dois parâmetros iniciais.

SET SERVEROUTPUT ON

DECLARE
   -- Altere os parametros abaixo conforme sua necessidade
   var_templateCode  VARCHAR2(100) := 'NAME_TEMPLATE_CODE'; -- Template Code.
   boo_deleteDataDef BOOLEAN       := TRUE;                 -- True/False para excluir Data Def. associado.
BEGIN

FOR RS IN (SELECT T1.APPLICATION_SHORT_NAME TEMPLATE_APP_NAME
                , T1.DATA_SOURCE_CODE
                , T2.APPLICATION_SHORT_NAME DEF_APP_NAME
             FROM XDO_TEMPLATES_B      T1
                , XDO_DS_DEFINITIONS_B T2
            WHERE T1.TEMPLATE_CODE    = var_templateCode
              AND T1.DATA_SOURCE_CODE = T2.DATA_SOURCE_CODE) LOOP

  XDO_TEMPLATES_PKG.DELETE_ROW(RS.TEMPLATE_APP_NAME, var_templateCode);

  DBMS_OUTPUT.PUT_LINE('Template ' || var_templateCode || ' excluído.');

  IF boo_deleteDataDef THEN
    XDO_DS_DEFINITIONS_PKG.DELETE_ROW(RS.DEF_APP_NAME, RS.DATA_SOURCE_CODE);

    DBMS_OUTPUT.PUT_LINE('Data Definition ' || RS.DATA_SOURCE_CODE || ' excluido.');
  END IF;
END LOOP;

DBMS_OUTPUT.PUT_LINE('Faça um COMMIT ou um ROLLBACK para finalizar a execução!');

EXCEPTION
  WHEN OTHERS THEN
  -- ROLLBACK;
  DBMS_OUTPUT.PUT_LINE('Não é possível excluir Template XML Publisher' || var_templateCode);
  DBMS_OUTPUT.PUT_LINE(substr(SQLERRM, 1, 200));
END;



Abraço,
Júnio Vitor de Paula

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *