SQL xml query problems

Hello,
I am trying to query a database column containing xml. How my problem is when I display my query on the page the data is not being shown properly.
The data in the database is like this:
<P><tag1>2003/05/22 11:01:34</tag1><tag2>2003/05/22</tag2><tag3>11:01:34</tag3><tag4></tag4>.......
However all that is returned is on the jsp page
2003/05/22 11:01:34<tag2>2003/05/22<tag3>11:01:34..............
i.e closing tags missing and empty pairs not shown at all.
My query is a simple
String sqlQuery="select * from table;
rs = stmt.executeQuery (sqlQuery);
rs.next();
out.print(rs.getString(1));
Can anyone suggest why the data stored in the column is being truncated and how I can prevent this.
Many thanks in advance
Les,

Surely this is because the browser is interpretting the tags as HTML tags? Do a "view source" on the page and it should be right.
Otherwise, you will have to store the query in the DB with escapt characters before the <'s

Similar Messages

  • How to tune the performance of Oracle SQL/XML query?

    Hi all,
    I am running Oracle 9i and like to run the following Oracle SQL/XML query. It takes about 3+ hour and still not finish. If I get rid all the XML stuffs it only take minutes to run. Does anybody know how to what's the reason of this slow and how to tune it?
    SELECT XMLElement("CUSTOMER",
    XMLForest(C_CUSTKEY "C_CUSTKEY", C_NAME "C_NAME", C_ADDRESS "C_ADDRESS", C_PHONE "C_PHONE", C_MKTSEGMENT "C_MKTSEGMENT", C_COMMENT "C_COMMENT"),
    (SELECT XMLAgg(XMLElement("ORDERS",
    XMLForest(O_ORDERKEY "O_ORDERKEY", O_CUSTKEY "O_CUSTKEY", O_ORDERSTATUS "O_ORDERSTATUS", O_ORDERPRIORITY "O_ORDERPRIORITY", O_CLERK "O_CLERK", O_COMMENT "O_COMMENT"),
    (SELECT XMLAgg(XMLElement("LINEITEM",
    XMLForest(L_ORDERKEY "L_ORDERKEY", L_RETURNFLAG "L_RETURNFLAG", L_LINESTATUS "L_LINESTATUS", L_SHIPINSTRUCT "L_SHIPINSTRUCT", L_SHIPMODE "L_SHIPMODE", L_COMMENT "L_COMMENT")
    FROM LINEITEM
    WHERE LINEITEM.L_ORDERKEY = ORDERS.O_ORDERKEY)
    FROM ORDERS
    WHERE ORDERS.O_CUSTKEY = CUSTOMER.C_CUSTKEY)
    FROM CUSTOMER ;
    Thanks very much in advance for your time,
    Jinghao Liu

    ajallen wrote:
    Why not something more like
    SELECT *
    FROM fact1 l,
    FULL OUTER JOIN fact1 d
    ON l.company = d.company
    AND l.transactiontypeid = 1
    AND d.transactiontypeid = 2;
    Because this is not an equivalent of the original query.
    drop table t1 cascade constraints purge;
    drop table t2 cascade constraints purge;
    create table t1 as select rownum t1_id from dual connect by level <= 5;
    create table t2 as select rownum+2 t2_id from dual connect by level <= 5;
    select * from (select * from t1 where t1_id > 2) t1 full outer join t2 on (t1_id = t2_id);
    select * from t1 full outer join t2 on (t1_id = t2_id and t1_id > 2);
         T1_ID      T2_ID
             3          3
             4          4
             5          5
                        6
                        7
         T1_ID      T2_ID
             1
             2
             3          3
             4          4
             5          5
                        6
                        7

  • How to perf tune Oracle SQL/XML query?

    Hi all,
    I am using Oracle 9i and like to run the following Oracle SQL/XML query. It takes about 3+ hour and still not finish. If I get rid all the XML stuffs it only take minutes to run. Does anybody know how to what's the reason of this slow and how to tune it?
    SELECT XMLElement("CUSTOMER",
    XMLForest(C_CUSTKEY "C_CUSTKEY", C_NAME "C_NAME", C_ADDRESS "C_ADDRESS", C_PHONE "C_PHONE", C_MKTSEGMENT "C_MKTSEGMENT", C_COMMENT "C_COMMENT"),
    (SELECT XMLAgg(XMLElement("ORDERS",
    XMLForest(O_ORDERKEY "O_ORDERKEY", O_CUSTKEY "O_CUSTKEY", O_ORDERSTATUS "O_ORDERSTATUS", O_ORDERPRIORITY "O_ORDERPRIORITY", O_CLERK "O_CLERK", O_COMMENT "O_COMMENT"),
    (SELECT XMLAgg(XMLElement("LINEITEM",
    XMLForest(L_ORDERKEY "L_ORDERKEY", L_RETURNFLAG "L_RETURNFLAG", L_LINESTATUS "L_LINESTATUS", L_SHIPINSTRUCT "L_SHIPINSTRUCT", L_SHIPMODE "L_SHIPMODE", L_COMMENT "L_COMMENT")
    FROM LINEITEM
    WHERE LINEITEM.L_ORDERKEY = ORDERS.O_ORDERKEY)
    FROM ORDERS
    WHERE ORDERS.O_CUSTKEY = CUSTOMER.C_CUSTKEY)
    FROM CUSTOMER ;
    Thanks very much in advance for your time,
    Jinghao Liu

    Please post this message at:
    Forums Home » Oracle Technology Network (OTN) » Products » Database » XML DB

  • Sql select query problem

    hi friends,
    i've a view called "risk_efforts" with fields user_id,user_name,wknd_dt,week_day,prod_efforts,unprod_efforts.
    Name Type
    ROW_ID NUMBER
    USER_ID VARCHAR2(14)
    USER_NAME VARCHAR2(50)
    WKND_DT VARCHAR2(8)
    WEEK_DAY VARCHAR2(250)
    PROD_EFFORTS NUMBER
    UNPROD_EFFORTS NUMBER
    data is like this:
    when there is some data in prod_efforts, unprod_efforts will be null
    when there is some data in unprod_efforts, prod_efforts will be null
    for example:
    USER_ID     USER_NAME     WKND_DT     WEEK_DAY     PROD_EFFORTS     UNPROD_EFFORTS
    G666999     GTest     20100403     TUE     null 3
    G666999     GTest     20100403     TUE     14     null
    now i want to combine these 2 rows into 1 row i.e o/p should be like this
    USER_ID     USER_NAME     WKND_DT     WEEK_DAY     PROD_EFFORTS     UNPROD_EFFORTS
    G666999     GTest     20100403     TUE     14 3
    i've tried all combinations but couldn't get the query. Please help me with the exact SQL select query.
    thanks,
    Girish

    Welcome to the forum.
    First read this:
    Urgency in online postings
    Secondly, it's always helpful to provide the following:
    1. Oracle version (SELECT * FROM V$VERSION)
    2. Sample data in the form of CREATE / INSERT statements.
    3. Expected output
    4. Explanation of expected output (A.K.A. "business logic")
    5. Use \ tags for #2 and #3. See FAQ (Link on top right side) for details.
    You have provided #3 and #4. However with no usable form of sample data forum members will often not respond as quickly as they could if you provided #2.
    I'm just wagering a guess here but what about this:SELECT ROW_ID
    , USER_ID
    , WKND_DT
    , WEEK_DAY
    , MAX(PROD_EFFORTS) AS PROD_EFFORTS
    , MAX(UNPROD_EFFORTS) AS UNPROD_EFFORTS
    FROM RISK_EFFORTS
    GROUP BY ROW_ID
    , USER_ID
    , WKND_DT
    , WEEK_DAY                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • PL/SQL XML Parser (problem getting text of a node)

    I am trying to get the contents of an ELEMENT (node with a CDATA section) using xmldom.getNodeValue(). However, it seems that there is a MAXIMUM number of characters that I can get back.
    I think I've found a work-around using xmldom.writeToBuffer() which seems to write all of the CDATA contents to a VARCHAR2 variable. Now my problem is that it is using strings like '&#60' and '&#38'. I recognize these strings as being "internal representations of '<' and '&' respectively. I'd not have to replace every occurence of these types of strings with the ASCII equivalent -especially since I don't know all of the possible '&#nn' strings that may crop up.
    Help!

    The use of "//" or "\\" appears to be a bug in JServer. It has
    been filed. You should not specify the path as a shared
    directory as a workaround.
    Oracle XML Team
    http://technet.oracle.com
    Oracle Technology Network
    Andre (guest) wrote:
    : Oracle 8.1.5 database on NT
    : When i try running the example with command:
    : SQL*Plus> exec domsample
    : ('//SERVER_03/ORACLE/xml_tmp','family.xml', 'err.txt');
    : I get the following error:
    : ERROR at line 1:
    : ORA-20100: Error occurred while parsing:
    : //ORACLE/xml_tmp/err.txt
    : ORA-06512: at "OEF1_MGR.XMLPARSER", line 43
    : ORA-06512: at "OEF1_MGR.XMLPARSER", line 120
    : ORA-06512: at "OEF1_MGR.DOMSAMPLE", line 80
    : ORA-06512: at line 1
    : If i use backward-slashes '\' which should be OK for NT i get:
    : ORA-20100: Error occurred while parsing:
    : \\ORACLE\xml_tmp/err.txt
    : I tried using a directory (create directory ...) but this
    : results in the same error.
    : Thus anyone now how it should be done?
    : Thanks
    null

  • PL/SQL XML Parser - problem running example

    Oracle 8.1.5 database on NT
    When i try running the example with command:
    SQL*Plus> exec domsample
    ('//SERVER_03/ORACLE/xml_tmp','family.xml', 'err.txt');
    I get the following error:
    ERROR at line 1:
    ORA-20100: Error occurred while parsing:
    //ORACLE/xml_tmp/err.txt
    ORA-06512: at "OEF1_MGR.XMLPARSER", line 43
    ORA-06512: at "OEF1_MGR.XMLPARSER", line 120
    ORA-06512: at "OEF1_MGR.DOMSAMPLE", line 80
    ORA-06512: at line 1
    If i use backward-slashes '\' which should be OK for NT i get:
    ORA-20100: Error occurred while parsing:
    \\ORACLE\xml_tmp/err.txt
    I tried using a directory (create directory ...) but this
    results in the same error.
    Thus anyone now how it should be done?
    Thanks
    null

    The use of "//" or "\\" appears to be a bug in JServer. It has
    been filed. You should not specify the path as a shared
    directory as a workaround.
    Oracle XML Team
    http://technet.oracle.com
    Oracle Technology Network
    Andre (guest) wrote:
    : Oracle 8.1.5 database on NT
    : When i try running the example with command:
    : SQL*Plus> exec domsample
    : ('//SERVER_03/ORACLE/xml_tmp','family.xml', 'err.txt');
    : I get the following error:
    : ERROR at line 1:
    : ORA-20100: Error occurred while parsing:
    : //ORACLE/xml_tmp/err.txt
    : ORA-06512: at "OEF1_MGR.XMLPARSER", line 43
    : ORA-06512: at "OEF1_MGR.XMLPARSER", line 120
    : ORA-06512: at "OEF1_MGR.DOMSAMPLE", line 80
    : ORA-06512: at line 1
    : If i use backward-slashes '\' which should be OK for NT i get:
    : ORA-20100: Error occurred while parsing:
    : \\ORACLE\xml_tmp/err.txt
    : I tried using a directory (create directory ...) but this
    : results in the same error.
    : Thus anyone now how it should be done?
    : Thanks
    null

  • SQL date query problem with century/ year

    We have an oracle database with about 6 million records. There is a date field called Entered Date that ranges from 1985 to the present.
    The majority of these records were entered prior to Jan 1 2000.
    If I run a query like
    select count(*) from (tablename) where entered_date < '01-JAN-00' I get 0
    if I do
    select count(*) from (tablename) where entered_date < '31-DEC-99' I get 0
    BUT IF I DO
    select count(*) from (tablename) where entered_date < '01-JAN-00' I get 6 million records
    or
    select count(*) from TREASURY.ctrc where entrydate > '31-DEC-99' I get 6 million records
    I've tried the same queries using 4 digit years but get the same results; it thinks that 2000 is the less than 1999
    How do I get around this?
    thanks

    Hi,
    975204 wrote:
    there are 6 million records on the table
    about two thirds have a date prior to Jan 1 , 2000How do you know that? From knowledge of the application, you may know that two thirds of them are supposed to have dates prior to 2000, but if
    SELECT  COUNT (*)
    FROM      TABLE_NAME
    WHERE      ENTRYDATE < TO_DATE ( '01-JAN-2000'
                           , 'DD-MON-YYYY'
    ;returns 0, that's pretty strong proof that none of them actually do.
    When I look at the dates , they display as 31-DEC-86Another example of why using 2-digit years is such a bad idea.
    I cant actually provide dump of this clients confidential dataSeriously; you can't provide one DUMP output? You've already said that it displays as 31-DEC-86, so even if the fact that 1 entry in the 6-million row table was done on December 31, 1986 was such a big secret, it's already out, and you won't be causing any more harm by showing the DUMP results.
    I ran the query with the same format as the date ie
    SELECT COUNT(*) FROM TREASURY.CTRC WHERE ENTRYDATE < TO_DATE ( '31-DEC-99'
    , 'DD-MON-YY'
    but same results
    if the column is defined as a DATE type, does Oracle make a distinction based on how the data displays, meaning does it think that 31-DEC-86 is different than 31-DEC-1986?No, all DATE columns have the same format. A DATE may be displayed one way of the other, but it is stored as neither.
    Do I need to convert all the data to a 4 digit year? You should always display dates with a 4-digit year.
    Run an update query that says if year >= 80 and <= 99 add 19 in front of the year, else add 20 in front of the yearLet's find out exactly what the problem is, first.
    Did you see Ascheffer's message? ^1^ It was dated just a couple of minutes before your last message, so you might not have noticed it. Run it to see what the actual 4-digit years are.
    If it shows, for example, that there are a lot of entrydates in the years 2080 to 2099, and you decide that all of those really should be 100 years earlier, then use ADD_MONTHS to correct them:
    UPDATE     table_name
    SET     entrydate = ADD_MONTHS ( entrydate
                               , -100 * 12
    WHERE   entrydate >= TO_DATE ( '01-JAN-2080'
                             , 'DD-MON-YYYY'
    AND     entrydate <  TO_DATE ( '01-JAN-2100'
                             , 'DD-MON-YYYY'
    ;Edited by: Frank Kulash on Mar 15, 2013 6:09 PM
    ^1^ Obviously, you did see Ascheffer's message; I was still typing the message above when you posted another one.

  • SQL XML Query Help

    I have four tables and I want to create one XML file. I provided the temp tables with
    data and expected output.
    create table #ZDL(ZLN bigint, ZTLA int, ZMR decimal, ZCLS varchar(20), ZPITIP money)
    insert into #ZDL values(1234, 200000, 8.5, 'CART', 1500.00)
    create table #ZBL(ZLN bigint, ZBN varchar(50), ZFN varchar(20), ZMN varchar(8), ZLL varchar(20))
    insert into #ZBL values(1234, 'TEST Test', 'TEST', null, 'Test')
    create table #ZCC(ZLN bigint, ZSN int, ZCE int)
    insert into #ZCC values(1234, 1, 4)
    create table #ZP(ZLN bigint, ZPT varchar(50), ZPP int, ZNU int)
    insert into #ZP values(1234, 'Attached', 6500, 3)
    Expected XML Result should be:
    <TEST_DATA xmlns="http://www.TestData.com/Schema/Test"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.TestData.com/Schema/Test_Schema.xsd">
    <KEY _Name="ZID" _Value="789" _ID="ZID"/>
    <ZL>
    <ZLN>1234</ZLN>
    <ZTLA>200000</ZTLA>
    <ZMR>8.5</ZMR>
    <ZCLS>CART</ZCLS>
    <ZPITIP>1500.00</ZPITIP>
    </ZL>
    <ZBS>
    <ZB>
    <ZBN>TEST Test</ZBN>
    <ZFN>TEST</ZFN>
    <ZMN></ZMN>
    <ZLL>Test</ZLL>
    </ZB>
    </ZBS>
    <ZCC>
    <ZC>
    <ZSN>1</ZSN>
    <ZCE>4</ZCE>
    </ZC>
    </ZCC>
    <ZP>
    <ZPT>Attached</ZPT>
    <ZPP>6500</ZPP>
    <ZNU>3</ZNU>
    </ZP>
    </TEST_DATA>
    Thanks

    little change in your query as OP expected
    SELECT
    (SELECT ZLN ,
    ZTLA ,
    ZMR ,
    ZCLS,
    ZPITIP --AS [*]
    FROM #ZDL
    WHERE ZLN = z1.ZLN
    FOR XML PATH('ZL'),TYPE) AS [*],
    (SELECT
    ZBN ,--AS [*],
    ZFN ,
    ISNULL(ZMN,'') AS ZMN ,
    ZLL
    FROM #ZBL
    WHERE ZLN = z1.ZLN
    FOR XML PATH('ZB'),TYPE) AS [ZBS],
    (SELECT
    ZSN,ZCE
    FROM #ZCC
    WHERE ZLN = z1.ZLN
    FOR XML PATH('ZC'),TYPE) AS [ZCC],
    (SELECT
    ZPT,
    ZPP,
    ZNU
    FROM #ZP
    WHERE ZLN = z1.ZLN
    FOR XML PATH('ZP'),TYPE) AS [*]
    FROM (SELECT DISTINCT ZLN FROM #ZDL) z1
    FOR XML PATH('TEST_DATA')
    Nope
    it will give different output
    see the difference
    mine
    <TEST_DATA>
    <ZL>
    <ZLN>1234</ZLN>
    <ZTLA>200000</ZTLA>
    <ZMR>9</ZMR>
    <ZCLS>CART</ZCLS>
    1500.0000
    </ZL>
    <ZBS>
    <ZB>
    TEST Test
    <ZFN>TEST</ZFN>
    <ZMN />
    <ZLL>Test</ZLL>
    </ZB>
    </ZBS>
    <ZCC>
    <ZC>
    <ZSN>1</ZSN>
    <ZCE>4</ZCE>
    </ZC>
    </ZCC>
    <ZP>
    <ZPT>Attached</ZPT>
    <ZPP>6500</ZPP>
    <ZNU>3</ZNU>
    </ZP>
    </TEST_DATA>
    and see your output
    <TEST_DATA>
    <ZL>
    <ZLN>1234</ZLN>
    <ZTLA>200000</ZTLA>
    <ZMR>9</ZMR>
    <ZCLS>CART</ZCLS>
    <ZPITIP>1500.0000</ZPITIP>
    </ZL>
    <ZBS>
    <ZB>
    <ZBN>TEST Test</ZBN>
    <ZFN>TEST</ZFN>
    <ZMN />
    <ZLL>Test</ZLL>
    </ZB>
    </ZBS>
    <ZCC>
    <ZC>
    <ZSN>1</ZSN>
    <ZCE>4</ZCE>
    </ZC>
    </ZCC>
    <ZP>
    <ZPT>Attached</ZPT>
    <ZPP>6500</ZPP>
    <ZNU>3</ZNU>
    </ZP>
    </TEST_DATA>
    Its different from what Op wanted
    my suggestion gives exactly in the format wanted
    notice extra nodes ZPITIP and ZLN
    coming in your case
    Your original suggestion also has this issues
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • XML query problem

    hello
    i have xml DATA AS UNDER , i want TO GET alll THE DATA BETWEEN <eob> </eob> tags.
    CREATE TABLE XMLTABLE (ID NUMBER, xml_data XMLTYPE);
    INSERT INTO XMLTABLE
    VALUES (1,
    XMLTYPE
    (' <eob>
    <eobHeader>THE FOLLOWING STATEMENT should be included IN your STATEMENT OF Benefits OR appear WITH your CHECK endorsement:</eobHeader>
    <eobText>Paid IN accordance WITH rate agreement.</eobText>
    <eobFooter>FOR this discount TO APPLYthis claim.</eobFooter>
    </eob>' ) );
    it shoud display me AS UNDER. plase HELP me
    THE FOLLOWING STATEMENT should be included IN your STATEMENT OF Benefits OR appear WITH your CHECK endorsement:
    Paid IN accordance WITH rate agreement
    FOR this discount TO APPLYthis claim.
    i trid this but does NOT WORK
    SELECT EXTRACTVALUE (xml_data, '/eob/eobHeader')
    FROM XMLTABLE
    thank you in advance

    Your SQL statement asked only for the contents of the eobHeader node. The other two pieces of information are in sibling nodes so they are ignored by your SQL statement as you saw.
    Doing the following gets each piece of information as a column
    SELECT EXTRACTVALUE (xml_data, '/eob/eobHeader') hdr,
           EXTRACTVALUE (xml_data, '/eob/eobText') Txt,
           EXTRACTVALUE (xml_data, '/eob/eobFooter') Ftr
    FROM XMLTABLEThe following is one option to make that into one string if you are really wanting the SQL to do the formatting
    SELECT EXTRACTVALUE (xml_data, '/eob/eobHeader') || chr(10) ||
           EXTRACTVALUE (xml_data, '/eob/eobText') || chr(10) ||
           EXTRACTVALUE (xml_data, '/eob/eobFooter')
    FROM XMLTABLE

  • How do I create an undeclared namespace node with sql/xml?

    I have to interact with a .NET web service that is expecting to have an xml node with an undeclared namespace, i.e. <address xmlns=""> I figured that I could create this by using XMLATTRIBUTES ( '' AS "xmlns") but a null attribute will not be added to the attribute listing. This works fine for other xmlns entries that contain values. Without this undeclared namespace node, the web service reports an Internal SOAP failure message, so I have to include it. Do I have to resort to manually injecting this null attribute via DOM after I produce the xml? I'm using SQL/XML query generate the xml as a view which gives me the entire packet for this document/literal web service OTHER THAN this missing undeclared namespace element.
    Any tips/suggestions would be helpful! Thanks a bunch, and have a Happy Holiday Season.
    Eric

    You can use UTL_RAW package.
    First, convert string to raw with UTL_RAW.CAST_TO_RAW, then using UTL_RAW.CONVERT to convert raw to utf-8 and finally UTL_RAW.CAST_TO_VARCHAR to get utf-8 string.
    Regards

  • Problem in xml query

    Hi
    I am working on BLS and having problem in xml query.I want to perform some calculation over xml columns.Than total of this as a new column.I can do this part in logic editor itself but can i do these both task by XSLT.
    Can be made our own XSLT for this ?
    I am feeling kind of fear to xslt. Can anybody help me in this.
    Thanks a lot in advance
    thomas

    Ram,
    In xMII there is a list of predefined xslt transforms that do something similar to what you are explaining.  The 3 that I think may be what you are looking for are
    they are under Calculation Transformations and Subtotal Transformation take a look at these and tell me if they are doing what you want to accomplish.  In the xMII help file do a search on Inline Transforms or navigate to Advanced Topics -> Inline Transforms -> Predefined Inline Transforms.  In this section there are examples of how to use these transforms and apply them in the query templates.  If this is not what you are looking for can you explain in a little more detail along with a simple example of how you want this transform to work.  Also why do you want to use xslt if you can already accomplish this in BLS?
    Regards,
    Erik

  • XML query structure problem

    Hi experts,
    I am looking for help on the following XML query. I have a table (example) organized as such:
    meas     data_element     
    ABC     rate                  
    DEF     rate1                   
    DEF     rate2                   
    DEF     rate3                   
    GHI     rate                   
    JKL     rate1a           
    JKL     rate2b             I'm trying to keep the "meas" column as the top node attribute, with the "data_elements" as attributes of the children of "meas"
    In short, I'm looking for the following output, but, well..keep coming up short.
    <meas id="ABC">
         <data_elements>
            <data_element id="rate">
                <rpt>false</rpt>
             </data_element>
        </data_elements>
    </meas>
    <meas id="DEF">
         <data_elements>
              <data_element id="rate1">
                   <rpt>false</rpt>
              </data_element>
                     <data_element id="rate2">
                   <rpt>false</rpt>
              </data_element>
              <data_element id="rate3">
                      <rpt>false</rpt>
              </data_element>
         <data_elements>
    </meas>
    .....and so forth...I'm having trouble with getting the multiple rows of 'data_element' under 'data_elements', and under the single 'meas' one node, any suggestions? My code keeps generating multiple rows. The rpt node is a constant value of 'false'
    Thanks

    You have to group, and aggregate using XMLAgg :
    SQL> set long 5000
    SQL>
    SQL> with sample_data (meas, data_element) as (
      2    select 'ABC',     'rate'   from dual union all
      3    select 'DEF',     'rate1'      from dual union all
      4    select 'DEF',     'rate2'  from dual union all
      5    select 'DEF',     'rate3'  from dual union all
      6    select 'GHI',     'rate'   from dual union all
      7    select 'JKL',     'rate1a' from dual union all
      8    select 'JKL',     'rate2b' from dual
      9  )
    10  select xmlserialize(content
    11           xmlagg(
    12             xmlelement("meas",
    13               xmlattributes(meas as "id")
    14             , xmlelement("data_elements",
    15                 xmlagg(
    16                   xmlelement("data_element",
    17                     xmlattributes(data_element as "id")
    18                   , xmlelement("rpt", 'false')
    19                   )
    20                   order by data_element -- if necessary
    21                 )
    22               )
    23             )
    24           )
    25           indent
    26         ) as result
    27  from sample_data
    28  group by meas ;
    RESULT
    <meas id="ABC">
      <data_elements>
        <data_element id="rate">
          <rpt>false</rpt>
        </data_element>
      </data_elements>
    </meas>
    <meas id="DEF">
      <data_elements>
        <data_element id="rate1">
          <rpt>false</rpt>
        </data_element>
        <data_element id="rate2">
          <rpt>false</rpt>
        </data_element>
        <data_element id="rate3">
          <rpt>false</rpt>
        </data_element>
      </data_elements>
    </meas>
    <meas id="GHI">
      <data_elements>
        <data_element id="rate">
          <rpt>false</rpt>
        </data_element>
      </data_elements>
    </meas>
    <meas id="JKL">
      <data_elements>
        <data_element id="rate1a">
          <rpt>false</rpt>
        </data_element>
        <data_element id="rate2b">
          <rpt>false</rpt>
        </data_element>
      </data_elements>
    </meas>

  • SQL+-MULTI TABLE QUERY PROBLEM

    HAI ALL,
    ANY SUGGESTION PLEASE?
    SUB: SQL+-MULTI TABLE QUERY PROBLEM
    SQL+ QUERY GIVEN:
    SELECT PATIENT_NUM, PATIENT_NAME, HMTLY_TEST_NAME, HMTLY_RBC_VALUE,
    HMTLY_RBC_NORMAL_VALUE, DLC_TEST_NAME, DLC_POLYMORPHS_VALUE,
    DLC_POLYMORPHS_NORMAL_VALUE FROM PATIENTS_MASTER1, HAEMATOLOGY1,
    DIFFERENTIAL_LEUCOCYTE_COUNT1
    WHERE PATIENT_NUM = HMTLY_PATIENT_NUM AND PATIENT_NUM = DLC_PATIENT_NUM AND PATIENT_NUM
    = &PATIENT_NUM;
    RESULT GOT:
    &PATIENT_NUM =1
    no rows selected
    &PATIENT_NUM=2
    no rows selected
    &PATIENT_NUM=3
    PATIENT_NUM 3
    PATIENT_NAME KKKK
    HMTLY_TEST_NAME HAEMATOLOGY
    HMTLY_RBC_VALUE 4
    HMTLY_RBC_NORMAL 4.6-6.0
    DLC_TEST_NAME DIFFERENTIAL LEUCOCYTE COUNT
    DLC_POLYMORPHS_VALUE     60
    DLC_POLYMORPHS_NORMAL_VALUE     40-65
    ACTUAL WILL BE:
    &PATIENT_NUM=1
    PATIENT_NUM 1
    PATIENT_NAME BBBB
    HMTLY_TEST_NAME HAEMATOLOGY
    HMTLY_RBC_VALUE 5
    HMTLY_RBC_NORMAL 4.6-6.0
    &PATIENT_NUM=2
    PATIENT_NUM 2
    PATIENT_NAME GGGG
    DLC_TEST_NAME DIFFERENTIAL LEUCOCYTE COUNT
    DLC_POLYMORPHS_VALUE     42
    DLC_POLYMORPHS_NORMAL_VALUE     40-65
    &PATIENT_NUM=3
    PATIENT_NUM 3
    PATIENT_NAME KKKK
    HMTLY_TEST_NAME HAEMATOLOGY
    HMTLY_RBC_VALUE 4
    HMTLY_RBC_NORMAL 4.6-6.0
    DLC_TEST_NAME DIFFERENTIAL LEUCOCYTE COUNT
    DLC_POLYMORPHS_VALUE     60
    DLC_POLYMORPHS_NORMAL_VALUE     40-65
    4 TABLES FOR CLINICAL LAB FOR INPUT DATA AND GET REPORT ONLY FOR TESTS MADE FOR PARTICULAR
    PATIENT.
    TABLE1:PATIENTS_MASTER1
    COLUMNS:PATIENT_NUM, PATIENT_NAME,
    VALUES:
    PATIENT_NUM
    1
    2
    3
    4
    PATIENT_NAME
    BBBB
    GGGG
    KKKK
    PPPP
    TABLE2:TESTS_MASTER1
    COLUMNS:TEST_NUM, TEST_NAME
    VALUES:
    TEST_NUM
    1
    2
    TEST_NAME
    HAEMATOLOGY
    DIFFERENTIAL LEUCOCYTE COUNT
    TABLE3:HAEMATOLOGY1
    COLUMNS:
    HMTLY_NUM,HMTLY_PATIENT_NUM,HMTLY_TEST_NAME,HMTLY_RBC_VALUE,HMTLY_RBC_NORMAL_VALUE     
    VALUES:
    HMTLY_NUM
    1
    2
    HMTLY_PATIENT_NUM
    1
    3
    MTLY_TEST_NAME
    HAEMATOLOGY
    HAEMATOLOGY
    HMTLY_RBC_VALUE
    5
    4
    HMTLY_RBC_NORMAL_VALUE
    4.6-6.0
    4.6-6.0
    TABLE4:DIFFERENTIAL_LEUCOCYTE_COUNT1
    COLUMNS:DLC_NUM,DLC_PATIENT_NUM,DLC_TEST_NAME,DLC_POLYMORPHS_VALUE,DLC_POLYMORPHS_
    NORMAL_VALUE,
    VALUES:
    DLC_NUM
    1
    2
    DLC_PATIENT_NUM
    2
    3
    DLC_TEST_NAME
    DIFFERENTIAL LEUCOCYTE COUNT
    DIFFERENTIAL LEUCOCYTE COUNT
    DLC_POLYMORPHS_VALUE
    42
    60
    DLC_POLYMORPHS_NORMAL_VALUE
    40-65
    40-65
    THANKS
    RCS
    E-MAIL:[email protected]
    --------

    I think you want an OUTER JOIN
    SELECT PATIENT_NUM, PATIENT_NAME, HMTLY_TEST_NAME, HMTLY_RBC_VALUE,
    HMTLY_RBC_NORMAL_VALUE, DLC_TEST_NAME, DLC_POLYMORPHS_VALUE,
    DLC_POLYMORPHS_NORMAL_VALUE
    FROM PATIENTS_MASTER1, HAEMATOLOGY1,  DIFFERENTIAL_LEUCOCYTE_COUNT1
    WHERE PATIENT_NUM = HMTLY_PATIENT_NUM (+)
    AND PATIENT_NUM = DLC_PATIENT_NUM (+)
    AND PATIENT_NUM = &PATIENT_NUM;Edited by: shoblock on Nov 5, 2008 12:17 PM
    outer join marks became stupid emoticons or something. attempting to fix

  • Converting Oracle XML Query Result in Java String by using XSU

    Hi,
    I have a problem by converting Oracle XML Query Result in Java
    String by using XSU. I use XSU for Java.
    For example:
    String datum=new OracleXMLQuery(conn,"Select max(ps.datum) from
    preise ps where match='"+args[0]+"'");
    String datum1=datum;
    I become the following error:
    Prototyp.java:47: Incompatible type for declaration. Can't
    convert oracle.xml.sql.query.OracleXMLQuery to java.lang.String.
    Can somebody tell me a method() for converting to solve my
    problem??????
    Thanks

    Hmmm.. Pretty basic just look at the example:
    OracleXMLQuery qry = new OracleXMLQuery(conn,"Select max(ps.datum) from preise ps where match='"+args[0]+"'");
    String xmlString = qry.getXMLString();
    Hi,
    I have a problem by converting Oracle XML Query Result in Java
    String by using XSU. I use XSU for Java.
    For example:
    String datum=new OracleXMLQuery(conn,"Select max(ps.datum) from
    preise ps where match='"+args[0]+"'");
    String datum1=datum;
    I become the following error:
    Prototyp.java:47: Incompatible type for declaration. Can't
    convert oracle.xml.sql.query.OracleXMLQuery to java.lang.String.
    Can somebody tell me a method() for converting to solve my
    problem??????
    Thanks

  • Cooresponding Lists Names/Values XML Query

    Let's say there is an XML Schema that has
    <element name="mt" minOccurs="0" maxOccurs="unbounded">
    <element name="r" minOccurs="0" maxOccurs="unbounded">
    And for each measurement type (mt), you have a cooresponding measurement value (r). There are additional elements between these two lists. The actual XML data would look similiar to
    <mi>
         <mts>20061117100000-0800</mts>
         <gp>900</gp>
         <mt>MeasurementType1</mt>
         <mt>MeasurementType2</mt>
         <mt>MeasurementType3</mt>
         <mt>MeasurementType4</mt>
         <mt>MeasurementType5</mt>
         <mt>MeasurementType6</mt>
         <mt>MeasurementType7</mt>
         <mv>
              <moid>Identifier</moid>
              <r>58</r>
              <r>62</r>
              <r>43</r>
              <r>45</r>
              <r>43</r>
              <r>14</r>
              <r>29</r>
              <sf>FALSE</sf>
         </mv>
    </mi>
    The first occurance of mt corresponds to the first occurance of r, the second cooresponds to the second, et cetra.
    The MI element can repeat hundreds of times and there can be many measurementTypes. Now, I'm trying to figure out how I can create an XML query to efficiently handle this. The problem is that the <r> value is within the complexType <mv> and that is on the same level as <mt>. The XML Query would cause a cartesian product if I were to use something like ...
    select
    extractValue(value(xmldata), '/mi/mts') measurement_time_stamp,
    extractValue(value(xmldata), '/mi/gp') granularity_period,
    extractValue(value(mt), '/mt') measurement_type,
    extractValue(value(mv), '/mv/moid') measured_obj_id,
    extractValue(value(r), '/r') measurement_value,
    from xmltable
    , TABLE(XMLSequence(Extract(value(xmltable), '/mi/mv'))) mv
    , TABLE(XMLSequence(Extract(value(mi), '/mi/mt'))) mt
    , TABLE(XMLSequence(Extract(value(mi), '/mv/r'))) r
    This obviously wouldn't work. I could go and store all the types and values into a column using
    select
    replace(replace(replace(extract(value(mi), '/mi/mt').getStringVal(), '</mt><mt>', ';'), '<mt>'), '</mt>') measurement_type,
    extractValue(value(mv), '/mv/moid') measured_obj_id,
    replace(replace(replace(extract(value(mv), '/mv/r').getStringVal(), '</r><r>', ';'), '<r>'), '</r>') measurement_value
    from xmltable
    TABLE(XMLSequence(Extract(value(xmldata), '/md/mi'))) mi
    , TABLE(XMLSequence(Extract(value(mi), '/mi/mv'))) mv
    But this wouldn't work once the XML grew over 4000 bytes. So I need a way to extract this data maintaining the correct integrity (avoiding cartesians).
    One idea is a pipelined table function but I have concerns about scalability with that method. Is there a way to accomplish this optimally? I have solutions for this but none of them is going to deliver the scalability I am seeking.
    I expect the method chosen will probably need to handle a few hundred thousand files per day.
    Thanks,

    VJ
    I'd not seen your XML schema when I worked the original example, so I reverse engineered it from the instance. Unfortunately when I work with your schema, which contains more levels of nested I can't get it to optimize properly
    Here's what should work in theory
    SQL> set echo on
    SQL> spool testcase.log
    SQL> --
    SQL> connect sys/ as sysdba
    Enter password:
    Connected.
    SQL> set define on
    SQL> --
    SQL> define USERNAME = OTNTEST
    SQL> --
    SQL> def PASSWORD = OTNTEST
    SQL> --
    SQL> def USER_TABLESPACE = USERS
    SQL> --
    SQL> def TEMP_TABLESPACE = TEMP
    SQL> --
    SQL> def LOCAL_FILESYSTEM = 'C:\xdb\otn\457595'
    SQL> --
    SQL> drop user &USERNAME cascade
      2  /
    old   1: drop user &USERNAME cascade
    new   1: drop user OTNTEST cascade
    User dropped.
    SQL> grant connect, resource to &USERNAME identified by &PASSWORD
      2  /
    old   1: grant connect, resource to &USERNAME identified by &PASSWORD
    new   1: grant connect, resource to OTNTEST identified by OTNTEST
    Grant succeeded.
    SQL> grant create any directory, drop any directory to &USERNAME
      2  /
    old   1: grant create any directory, drop any directory to &USERNAME
    new   1: grant create any directory, drop any directory to OTNTEST
    Grant succeeded.
    SQL> grant alter session, create view to &USERNAME
      2  /
    old   1: grant alter session, create view to &USERNAME
    new   1: grant alter session, create view to OTNTEST
    Grant succeeded.
    SQL> alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
      2  /
    old   1: alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
    new   1: alter user OTNTEST default tablespace USERS temporary tablespace TEMP
    User altered.
    SQL> connect &USERNAME/&PASSWORD
    Connected.
    SQL> --
    SQL> alter session set events ='19027 trace name context forever, level 0x800'
      2  /
    Session altered.
    SQL> var schemaURL varchar2(256)
    SQL> var schemaPath varchar2(256)
    SQL> --
    SQL> create or replace directory XMLDIR as '&LOCAL_FILESYSTEM'
      2  /
    old   1: create or replace directory XMLDIR as '&LOCAL_FILESYSTEM'
    new   1: create or replace directory XMLDIR as 'C:\xdb\otn\457595'
    Directory created.
    SQL> begin
      2    :schemaURL := 'testcase.xsd';
      3    :schemaPath := '/public/testcase.xsd';
      4  end;
      5  /
    PL/SQL procedure successfully completed.
    SQL>
    SQL> declare
      2    res boolean;
      3    xmlSchema xmlType := xmlType(
      4  '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
      5  <!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com)-->
      6  <!--Please add namespace attributes, a targetNamespace attribute and import elements according to your requirements-->
      7  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" elementFormDefault="qualified" attributeFormDefaul
    t="unqualified" xdb:storeVarrayAsTable="true">
      8     <xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
      9     <xs:element name="mdc" xdb:defaultTable="MDC_TABLE">
    10             <xs:complexType xdb:SQLType="MDC_TYPE" xdb:maintainDOM="false">
    11                     <xs:sequence>
    12                             <xs:element ref="mfh"/>
    13                             <xs:element ref="md" minOccurs="0" maxOccurs="unbounded"/>
    14                             <xs:element ref="mff"/>
    15                     </xs:sequence>
    16             </xs:complexType>
    17     </xs:element>
    18     <xs:element name="mfh" xdb:defaultTable="">
    19             <xs:complexType xdb:SQLType="MFH_TYPE" xdb:maintainDOM="false">
    20                     <xs:sequence>
    21                             <xs:element ref="ffv"/>
    22                             <xs:element ref="sn"/>
    23                             <xs:element ref="st"/>
    24                             <xs:element ref="vn"/>
    25                             <xs:element ref="cbt"/>
    26                     </xs:sequence>
    27             </xs:complexType>
    28     </xs:element>
    29     <xs:element name="md" xdb:defaultTable="" >
    30             <xs:complexType  xdb:SQLType="MD_TYPE" xdb:maintainDOM="false">
    31                     <xs:sequence>
    32                             <xs:element ref="neid"/>
    33                             <xs:element ref="mi" minOccurs="0" maxOccurs="unbounded" />
    34                     </xs:sequence>
    35             </xs:complexType>
    36     </xs:element>
    37     <xs:element name="neid" xdb:defaultTable="" >
    38             <xs:complexType xdb:SQLType="NEID_TYPE" xdb:maintainDOM="false">
    39                     <xs:sequence>
    40                             <xs:element ref="neun"/>
    41                             <xs:element ref="nedn"/>
    42                     </xs:sequence>
    43             </xs:complexType>
    44     </xs:element>
    45     <xs:element name="mi" xdb:defaultTable="" >
    46             <xs:complexType xdb:SQLType="MI_TYPE" xdb:maintainDOM="false">
    47                     <xs:sequence>
    48                             <xs:element ref="mts"/>
    49                             <xs:element ref="gp"/>
    50                             <xs:element ref="mt" minOccurs="0" maxOccurs="unbounded"/>
    51                             <xs:element ref="mv" minOccurs="0" maxOccurs="unbounded" />
    52                     </xs:sequence>
    53             </xs:complexType>
    54     </xs:element>
    55     <xs:element name="mv" xdb:defaultTable="" >
    56             <xs:complexType xdb:SQLType="MV_TYPE" xdb:maintainDOM="false">
    57                     <xs:sequence>
    58                             <xs:element ref="moid"/>
    59                             <xs:element ref="r" minOccurs="0" maxOccurs="unbounded"/>
    60                             <xs:element ref="sf" minOccurs="0"/>
    61                     </xs:sequence>
    62             </xs:complexType>
    63     </xs:element>
    64     <xs:element name="mff" xdb:defaultTable="" >
    65             <xs:complexType xdb:maintainDOM="false">
    66                     <xs:sequence>
    67                             <xs:element ref="ts"/>
    68                     </xs:sequence>
    69             </xs:complexType>
    70     </xs:element>
    71     <xs:element name="ts" type="xs:string"/>
    72     <xs:element name="sf" type="xs:string"/>
    73     <xs:element name="r">
    74             <xs:complexType xdb:SQLType="R_TYTPE" xdb:maintainDOM="false">
    75                     <xs:simpleContent>
    76                             <xs:extension base="xs:string">
    77                                     <xs:attribute ref="dummy" use="prohibited"/>
    78                             </xs:extension>
    79                     </xs:simpleContent>
    80             </xs:complexType>
    81     </xs:element>
    82     <xs:attribute name="dummy" type="xs:boolean"/>
    83     <xs:element name="mt">
    84             <xs:complexType xdb:SQLType="MT_TYTPE" xdb:maintainDOM="false">
    85                     <xs:simpleContent>
    86                             <xs:extension base="xs:string">
    87                                     <xs:attribute ref="dummy" use="prohibited"/>
    88                             </xs:extension>
    89                     </xs:simpleContent>
    90             </xs:complexType>
    91     </xs:element>
    92     <xs:element name="moid" type="xs:string"/>
    93     <xs:element name="gp" type="xs:string"/>
    94     <xs:element name="mts" type="xs:string"/>
    95     <xs:element name="nedn" type="xs:string"/>
    96     <xs:element name="neun" type="xs:string"/>
    97     <xs:element name="cbt" type="xs:string"/>
    98     <xs:element name="vn" type="xs:string"/>
    99     <xs:element name="st" type="xs:string"/>
    100     <xs:element name="sn" type="xs:string"/>
    101     <xs:element name="ffv" type="xs:string"/>
    102  </xs:schema>');
    103  begin
    104    if (dbms_xdb.existsResource(:schemaPath)) then
    105      dbms_xdb.deleteResource(:schemaPath);
    106    end if;
    107    res := dbms_xdb.createResource(:schemaPath,xmlSchema);
    108  end;
    109  /
    PL/SQL procedure successfully completed.
    SQL> begin
      2    dbms_xmlschema.registerSchema
      3    (
      4      :schemaURL,
      5      xdbURIType(:schemaPath).getClob(),
      6      TRUE,TRUE,FALSE,TRUE
      7    );
      8  end;
      9  /
    PL/SQL procedure successfully completed.
    SQL> declare
      2    nested_table_name varchar2(256);
      3    iot_index_name varchar2(256);
      4  begin
      5    select table_name
      6      into nested_table_name
      7      from user_nested_tables
      8     where parent_table_column = '"XMLDATA"."md"'
      9       and parent_table_name = 'MDC_TABLE';
    10
    11    execute immediate 'rename "'|| nested_table_name ||'" to MD_TABLE';
    12
    13    select index_name
    14      into iot_index_name
    15      from user_indexes
    16     where table_name = 'MD_TABLE' and index_type = 'IOT - TOP';
    17
    18    execute immediate 'alter index "'|| iot_index_name ||'" rename to MD_IOT';
    19
    20    select table_name
    21      into nested_table_name
    22      from user_nested_tables
    23     where parent_table_column = 'mi'
    24       and parent_table_name = 'MD_TABLE';
    25
    26    execute immediate 'rename "'|| nested_table_name ||'" to MI_TABLE';
    27
    28    select index_name
    29      into iot_index_name
    30      from user_indexes
    31     where table_name = 'MI_TABLE' and index_type = 'IOT - TOP';
    32
    33    execute immediate 'alter index "'|| iot_index_name ||'" rename to MI_IOT';
    34
    35    select table_name
    36      into nested_table_name
    37      from user_nested_tables
    38     where parent_table_column = 'mt'
    39       and parent_table_name = 'MI_TABLE';
    40
    41    execute immediate 'rename "'|| nested_table_name ||'" to MT_TABLE';
    42
    43    select index_name
    44      into iot_index_name
    45      from user_indexes
    46     where table_name = 'MT_TABLE' and index_type = 'IOT - TOP';
    47
    48    execute immediate 'alter index "'|| iot_index_name ||'" rename to MT_IOT';
    49
    50    select table_name
    51      into nested_table_name
    52      from user_nested_tables
    53     where parent_table_column = 'mv'
    54       and parent_table_name = 'MI_TABLE';
    55
    56    execute immediate 'rename "'|| nested_table_name ||'" to MV_TABLE';
    57
    58    select index_name
    59      into iot_index_name
    60      from user_indexes
    61     where table_name = 'MV_TABLE' and index_type = 'IOT - TOP';
    62
    63    execute immediate 'alter index "'|| iot_index_name ||'" rename to MV_IOT';
    64
    65    select table_name
    66      into nested_table_name
    67      from user_nested_tables
    68     where parent_table_column = 'r'
    69       and parent_table_name = 'MV_TABLE';
    70
    71    execute immediate 'rename "'|| nested_table_name ||'" to R_TABLE';
    72
    73    select index_name
    74      into iot_index_name
    75      from user_indexes
    76     where table_name = 'R_TABLE' and index_type = 'IOT - TOP';
    77
    78    execute immediate 'alter index "'|| iot_index_name ||'" rename to R_IOT';
    79  end;
    80  /
    PL/SQL procedure successfully completed.
    SQL> desc MDC_TABLE
    Name                                                                                Null?    Type
    TABLE of SYS.XMLTYPE(XMLSchema "testcase.xsd" Element "mdc") STORAGE Object-relational TYPE "MDC_TYPE"
    SQL> --
    SQL> desc MD_TABLE
    Name                                                                                Null?    Type
    neid                                                                                         NEID_TYPE
    mi                                                                                           mi9495_COLL
    SQL> --
    SQL> desc MI_TABLE
    Name                                                                                Null?    Type
    mts                                                                                          VARCHAR2(4000 CHAR)
    gp                                                                                           VARCHAR2(4000 CHAR)
    mt                                                                                           mt9493_COLL
    mv                                                                                           mv9494_COLL
    SQL> --
    SQL> desc MT_TABLE
    Name                                                                                Null?    Type
    SYS_XDBBODY$                                                                                 VARCHAR2(4000 CHAR)
    dummy                                                                                        RAW(1)
    SQL> --
    SQL> desc MV_TABLE
    Name                                                                                Null?    Type
    moid                                                                                         VARCHAR2(4000 CHAR)
    r                                                                                            r9492_COLL
    sf                                                                                           VARCHAR2(4000 CHAR)
    SQL> --
    SQL> desc R_TABLE
    Name                                                                                Null?    Type
    SYS_XDBBODY$                                                                                 VARCHAR2(4000 CHAR)
    dummy                                                                                        RAW(1)
    SQL> --
    SQL> set autotrace on explain
    SQL> set lines 150 pages 100
    SQL> --
    SQL> var XMLTEXT varchar2(4000)
    SQL> --
    SQL> begin
      2    :xmlText :=
      3  '<mdc>
      4     <mfh>
      5             <ffv/>
      6             <sn/>
      7             <st/>
      8             <vn/>
      9             <cbt/>
    10     </mfh>
    11     <md>
    12             <neid>
    13                     <neun/>
    14                     <nedn/>
    15             </neid>
    16             <mi>
    17                     <mts>20061117100000-0800</mts>
    18                     <gp>900</gp>
    19                     <mt>MeasurementType1</mt>
    20                     <mt>MeasurementType2</mt>
    21                     <mt>MeasurementType3</mt>
    22                     <mt>MeasurementType4</mt>
    23                     <mt>MeasurementType5</mt>
    24                     <mt>MeasurementType6</mt>
    25                     <mt>MeasurementType7</mt>
    26                     <mv>
    27                             <moid>Identifier</moid>
    28                             <r>58</r>
    29                             <r>62</r>
    30                             <r>43</r>
    31                             <r>45</r>
    32                             <r>43</r>
    33                             <r>14</r>
    34                             <r>29</r>
    35                             <sf>FALSE</sf>
    36                     </mv>
    37             </mi>
    38     </md>
    39     <mff>
    40             <ts/>
    41     </mff>
    42  </mdc>';
    43  end;
    44  /
    PL/SQL procedure successfully completed.
    SQL> insert into MDC_TABLE values ( xmltype ( :xmltext ))
      2  /
    1 row created.
    Execution Plan
    Plan hash value: 1621636734
    | Id  | Operation                | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | INSERT STATEMENT         |           |     1 |   100 |     1   (0)| 00:00:01 |
    |   1 |  LOAD TABLE CONVENTIONAL | MDC_TABLE |       |       |            |          |
    SQL> commit
      2  /
    Commit complete.
    SQL> select MT_INDEX, MT_VALUE, R_VALUE
      2    from MDC_TABLE,
      3         xmlTable
      4         (
      5           '/mdc/md/mi'
      6           passing object_value
      7           columns
      8           XML xmltype path '.'
      9         ) MI,
    10         xmlTable
    11         (
    12           '/mi/mt'
    13           passing MI.XML
    14           columns
    15           MT_INDEX for ordinality,
    16           MT_VALUE varchar2(32) path 'text()'
    17         ) MT,
    18         xmlTable
    19         (
    20           '/mi/mv/r'
    21           passing MI.XML
    22           columns
    23           R_INDEX for ordinality,
    24           R_VALUE varchar2(32) path 'text()'
    25         ) R
    26   where MT_INDEX = R_INDEX
    27  /
      MT_INDEX MT_VALUE                         R_VALUE
             1 MeasurementType1                 58
             2 MeasurementType2                 62
             3 MeasurementType3                 43
             4 MeasurementType4                 45
             5 MeasurementType5                 43
             6 MeasurementType6                 14
             7 MeasurementType7                 29
    7 rows selected.
    Execution Plan
    Plan hash value: 2832518671
    | Id  | Operation                             | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                      |                        |  5449M|    19T|  1616M  (1)|999:59:59 |
    |   1 |  NESTED LOOPS                         |                        |  5449M|    19T|  1616M  (1)|999:59:59 |
    |   2 |   NESTED LOOPS                        |                        |    66M|   237G|   197K  (1)| 00:39:36 |
    |   3 |    NESTED LOOPS                       |                        |  8168 |    29M|    27   (0)| 00:00:01 |
    |*  4 |     TABLE ACCESS FULL                 | MDC_TABLE              |     1 |  3788 |     3   (0)| 00:00:01 |
    |   5 |     COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE |       |       |            |          |
    |   6 |    VIEW                               |                        |  8168 |   247K|    24   (0)| 00:00:01 |
    |   7 |     COUNT                             |                        |       |       |            |          |
    |   8 |      COLLECTION ITERATOR PICKLER FETCH| XMLSEQUENCEFROMXMLTYPE |       |       |            |          |
    |*  9 |   VIEW                                |                        |    82 |  2542 |    24   (0)| 00:00:01 |
    |  10 |    COUNT                              |                        |       |       |            |          |
    |  11 |     COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE |       |       |            |          |
    Predicate Information (identified by operation id):
       4 - filter(SYS_CHECKACL("ACLOID","OWNERID",xmltype('<privilege
                  xmlns="http://xmlns.oracle.com/xdb/acl.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd http://xmlns.oracle.com/xdb/acl.xsd
                  DAV:http://xmlns.oracle.com/xdb/dav.xsd"><read-properties/><read-contents/></privilege>'))=1)
       9 - filter("MT_INDEX"="R_INDEX")
    Note
       - dynamic sampling used for this statement
    SQL>As you can see the re-write is not working out in this case. I'll ask development to take a look at it and see if they can solve it. I think it's similar to another bug I've filed...
    WRT to your question about transforming. One easy transformation would be to number the nodes.. Eg use XSTL to add an index number to each MT node and each R node and then join on that value.

Maybe you are looking for

  • Discoverer 4i to OBIEE migration methodology - Oracle Recommended Way

    Hi, We are looking into a scenario where we are required to migrate large number of Discoverer 4i reports to OBIEE. We have good number of custom reports(approx 200) and views too that are to be migrated. Am aware about the migration assistant that c

  • How to make a photo as circle shape ?

    I am trying to sublimate my desk clock and it is round with 4.75" is there a way I can do the image exactly as the templates thanks

  • Sender File adapter : Alert are possible.

    Dear All i had a Scenario of <u>file to jdbc</u>.I am using FCC(content conversion ) at sender file adapter. <b>if the file is not having proper text field,or if its's blank file... i want to generate an alert..</b> while testing with a blank file ,

  • Can Aperture use Iweb pages?

    Greetings All: I've got several site that have been created using Iweb. But would like to generate the photo type pages using Aperture and then melt the two together. Is it possible to import my Iweb template into Aperture so the photo pages will loo

  • Camera is not Working properly

    My camera in windows 8 is looking like the attachment: I have updated to windows 8.1. In device manager also it is showing in imaging devices. The folder 'Integrated camera' in C drive is empty.