Oracle DBMS Outline commands

Hello Everyone,

We tried to run outline commands via the tags to run as raw but we are still encountering errors. I’ve looked around but haven’t seen any references to it.

below is a snippet of the SQL that we are trying to run.

===========================================================================

exec dbms_outln.drop_by_cat(‘TACT_FIX’);

drop outline OUT_SQL27;
create outline OUT_SQL27 for category tact_fix on
SELECT /+ index(PE XT159P0) / SUM(PS.PAY_SEG_AMT) FROM CI_PAY PY, CI_PAY_SEG PS, CI_PAY_EVENT PE, CI_SA SA, CI_SA_TYPE SAT WHERE PY.ACCT_ID = :1 AND PY.PAY_STATUS_FLG = ‘50’ AND PS.PAY_ID = PY.PAY_ID AND SA.SA_ID = PS.SA_ID AND SAT.SA_TYPE_CD = SA.SA_TYPE_CD AND SAT.CIS_DIVISION = SA.CIS_DIVISION AND SAT.DEBT_CL_CD = :2 AND PE.PAY_EVENT_ID = PY.PAY_EVENT_ID AND PE.PAY_DT BETWEEN :3 AND :4 AND NOT EXISTS (SELECT /+ORDERED/ PT.PAY_TENDER_ID FROM CI_PAY_TNDR PT , CI_THRD_PTY TP WHERE PT.PAY_EVENT_ID = PY.PAY_EVENT_ID AND PT.PAYOR_ACCT_ID = TP.ACCT_ID);

============================================================================

Thank you in advance for your help!

What error are you seeing? Does it help if you use the splitStatements=true and stripComments=false flags on ?

Nathan

Hi Nathan,

Sorry for the late reply…please see the liquibase error message below:

SEVERE 1/21/14 6:18 PM:liquibase: Error thrown as a SAXException: Error parsing line 21 column 481 of releases/release_134.4.0/ddl/R1V134.4.00.01.CREATE_OUTLINE_20.xml: The content of elements must consist of well-formed character data or markup. liquibase.exception.ChangeLogParseException: Error parsing line 21 column 481 of releases/release_134.4.0/ddl/R1V134.4.00.01.CREATE_OUTLINE_20.xml: The content of elements must consist of well-formed character data or markup. at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:113)

And the snippet of the XML


            alter session set current_schema = CISADM;

            exec dbms_outln.drop_by_cat(‘TACT_FIX’);

            drop outline OUT_SQL20;

            create outline OUT_SQL20 for category tact_fix on
            SELECT /+INDEX(CA1 XT120S1)/ TRUNC(REG_DATA_DTTM, ‘HH’)+(30* CEIL(TO_NUMBER(TO_CHAR(REG_DATA_DTTM,‘MI’)) /30))/1440 AS REG_DATA_DTTM, SUM (CB1.INTV_REG_DATA * TO_NUMBER(RTRIM(LTRIM(SRV.USAGE_FLG)) ||‘1’) * TO_NUMBER(RTRIM(LTRIM(SRV.HOW_TO_USE_FLG)) ||‘1’)) ,SRV.UOM_CD ,SRV.REG_ID FROM CI_SA_IREG_VW SRV, CI_REG_DATA_SET CA1, CI_REG_DATA CB1, CI_WFM_OPT DP1 WHERE SRV.SA_ID =  :1 AND (SRV.UOM_CD =  :2 OR EXISTS (SELECT ‘X’ FROM CI_BF_CHAR BFC WHERE BFC.BF_CD =  :3 AND ’ ’ <>  :4 AND BFC.CHAR_VAL = SRV.UOM_CD)) AND SRV.SQI_CD =  :5 AND SRV.USAGE_FLG IN (’+’, ‘-’) AND SRV.HOW_TO_USE_FLG IN (’+’, ‘-’) AND SRV.START_DTTM <  :6 AND SRV.INSTALL_DTTM <  :7 AND (SRV.STOP_DTTM IS NULL OR SRV.STOP_DTTM >  :8) AND (SRV.REMOVAL_DTTM IS NULL OR SRV.REMOVAL_DTTM >  :9) AND CA1.REG_ID = SRV.REG_ID AND CA1.REG_DATA_SET_ID = CB1.REG_DATA_SET_ID AND CA1.REG_DS_STATUS_FLG =  :10 AND CB1.REG_DATA_DTTM >  :11 AND CB1.REG_DATA_DTTM <=  :12 AND CA1.SET_DTTM <=  :13 AND CA1.REG_DS_TYPE_FLG <>  :14 AND DP1.WFM_NAME =  :15 AND DP1.EXT_OPT_TYPE = CA1.REG_DS_TYPE_FLG AND DP1.SEQ_NUM = 1 AND NOT EXISTS (SELECT /+INDEX(CA11 CM120S1)/ ‘x’ FROM CI_REG_DATA_SET CA11 ,CI_REG_DATA CB11 ,CI_WFM_OPT DP11 WHERE CA11.REG_ID = CA1.REG_ID AND CB11.REG_DATA_DTTM = CB1.REG_DATA_DTTM AND CA11.REG_DATA_SET_ID = CB11.REG_DATA_SET_ID AND CA11.REG_DS_STATUS_FLG =  :16 AND CA11.SET_DTTM <=  :17 AND DP11.WFM_NAME = DP1.WFM_NAME AND DP11.EXT_OPT_TYPE = CA11.REG_DS_TYPE_FLG AND DP11.SEQ_NUM = DP1.SEQ_NUM AND CA11.REG_DATA_SET_ID <> CA1.REG_DATA_SET_ID AND( (DP11.WFM_OPT_VAL < DP1.WFM_OPT_VAL) OR (CA11.SET_DTTM > CA1.SET_DTTM AND DP11.WFM_OPT_VAL = DP1.WFM_OPT_VAL) ) ) GROUP BY TRUNC(REG_DATA_DTTM, ‘HH’)+(30* CEIL(TO_NUMBER(TO_CHAR(REG_DATA_DTTM,‘MI’)) /30))/1440 ,SRV.UOM_CD ,SRV.REG_ID ORDER BY REG_DATA_DTTM,SRV.UOM_CD;




=====================================

I’ve put the outline in tags but liquibase is complaining that the SQL is not formed correctly…

Thank you in advance for your help!

Bill

That error is an XML parsing error. Since your sql has < and > chars the XML parser thinks you are specifying tags. You’ll want to wrap your sql in a CDATA block so it parses it correctly.


Nathan

You could also use an tag and store the sql in a separate non-xml parsed file as well if you would prefer.


Nathan