How to Delete XML Publisher Data Definition Template

DECLARE
  -- Change the following two parameters
  VAR_TEMPLATECODE  VARCHAR2(100) := 'CUX_CHANGE_RPT1'; -- Template Code
  BOO_DELETEDATADEF BOOLEAN := TRUE; -- delete the associated Data Def.
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);
 
    DELETE FROM XDO_LOBS
     WHERE LOB_CODE = VAR_TEMPLATECODE
       AND APPLICATION_SHORT_NAME = RS.TEMPLATE_APP_NAME
       AND LOB_TYPE IN ('TEMPLATE_SOURCE', 'TEMPLATE');
 
    DELETE FROM XDO_CONFIG_VALUES
     WHERE APPLICATION_SHORT_NAME = RS.TEMPLATE_APP_NAME
       AND TEMPLATE_CODE = VAR_TEMPLATECODE
       AND DATA_SOURCE_CODE = RS.DATA_SOURCE_CODE
       AND CONFIG_LEVEL = 50;
 
    DBMS_OUTPUT.PUT_LINE('Selected template has been ' || VAR_TEMPLATECODE ||
                         ' deleted.');
 
    IF BOO_DELETEDATADEF THEN
      XDO_DS_DEFINITIONS_PKG.DELETE_ROW(RS.DEF_APP_NAME,
                                        RS.DATA_SOURCE_CODE);
    
      DELETE FROM XDO_LOBS
       WHERE LOB_CODE = RS.DATA_SOURCE_CODE
         AND APPLICATION_SHORT_NAME = RS.DEF_APP_NAME
         AND LOB_TYPE IN
             ('XML_SCHEMA', 'DATA_TEMPLATE', 'XML_SAMPLE', 'BURSTING_FILE');
    
      DELETE FROM XDO_CONFIG_VALUES
       WHERE APPLICATION_SHORT_NAME = RS.DEF_APP_NAME
         AND DATA_SOURCE_CODE = RS.DATA_SOURCE_CODE
         AND CONFIG_LEVEL = 30;
    
      DBMS_OUTPUT.PUT_LINE('Selected Data Defintion has been ' ||
                           RS.DATA_SOURCE_CODE || ' deleted.');
    END IF;
  END LOOP;
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
    DBMS_OUTPUT.PUT_LINE('Unable to delete XML Publisher Template ' ||
                         VAR_TEMPLATECODE);
    DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));
END;

posted @ 2014-03-12 16:43  新新向荣  阅读(269)  评论(0编辑  收藏  举报