generate xml with levels data

Hello

I have a tlable like that

Desription level value
1 dept
2 name of the King
3 salary 3000
3 something information

So I want to generate xml according to the levels output, the output schould be
< Dept >-> level 1
< name > King-> level 2
< > 3000 salary < / salary >-> Level3
< Info > something < / info >-> Level3
< / name >
< / dept >

I tried to use the XMLELEMENT function... without success, I realize that with Oracle xml functions?

MDK.

Please always provide your version of the database. It is easier for us to provide an appropriate response.

Here are some ways that work on 10.2.0.4 (and probably high too):

(1) implement a recursive function in XQuery
(2) using the DBMS_XMLGEN.newContextFromHierarchy function

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as marc

SQL>
SQL> create table emp (
  2   lvl number,
  3   descr varchar2(30),
  4   val   varchar2(100)
  5  );

Table created

SQL> insert into emp values(1, 'dept', null);

1 row inserted

SQL> insert into emp values(2, 'name', 'King');

1 row inserted

SQL> insert into emp values(3, 'salary', '3000');

1 row inserted

SQL> insert into emp values(3, 'info', 'something');

1 row inserted

SQL> set long 500
SQL>
SQL> select xmlquery(
  2  'declare function local:getHierarchy($start-with as xs:integer)
  3   {
  4     for $i in ora:view("EMP")/ROW[LVL=xs:string($start-with)]
  5     return element {$i/DESCR}
  6     {
  7       $i/VAL/text(),
  8       local:getHierarchy(xs:integer($i/LVL)+1)
  9     }
 10   }; (: :)
 11   local:getHierarchy(1)'
 12   returning content
 13  ) as result
 14  from dual;

RESULT
--------------------------------------------------------------------------------

   King3000something


SQL> select dbms_xmlgen.getXML(
  2    dbms_xmlgen.newContextFromHierarchy(
  3     'select level, xmlelement(evalname(descr), val) from emp
  4     connect by prior lvl = lvl-1 start with lvl = 1'
  5    )
  6  ) as result
  7  from dual;

RESULT
--------------------------------------------------------------------------------


  King
    3000
    something
  

 

Published by: odie_63 on Dec 27. 2010 18:27

Tags: Database

Similar Questions

  • Filtering XML with E4X data

    Hello

    I have a document xml with the following syntax

    <shelf>
        <name>
          <![CDATA[Stationery]]>
        </name>
        <tier>
                         <hard level="2"/>
                         <easy level="1"/>
              </tier>
    </shelf>
    
    

    In the XML above, the there is more than one < shelf > with < level > tag which may have 1 or more < easy > or < hard > (or both) tags. To try to filter an xml structure to get an XMLList of objects < shelf > needs a tag in the tag < level > < last > with a @level of 1 using the E4X attribute

    XML. Shelf. (tier['hard'].@level == 1)

    I get AN object back when there is obviously more < shelf > with a tag < level > < hard > @level = 1

    Then E4X to manage such a complex filtering?

    Well I notice a few things. You have a few attributes level which are not met. And there is one node that has two different hard knots. Assuming that's true, then I think you could get both with

    XML. Shelf. (hard. (@level=="1").length ());

    I'm not really sure I can explain why it works. I found it here in this tutorial http://www.senocular.com/flash/tutorials/as3withflashcs3/?page=4.

  • How to generate xml with CDATA from a query

    I have the following query
    with data_tab as ( select 'Geetha' "code" ,'Book' "category" from dual union            
    select 'Nokia' "code" ,'mobile' "category" from dual )
    select Xmltype(cursor(select * from data_tab)) from dual
    and the output is
    <?xml version="1.0"?>
    <ROWSET>
     <ROW>
      <code>Geetha</code>
      <category>Book</category>
     </ROW>
     <ROW>
      <code>Nokia</code>
      <category>mobile</category>
     </ROW>
    </ROWSET>
    but I want to insert ot XML CDATA.
    Is that I need this xml file in the following format.
    <?xml version="1.0"?>
    <ROWSET>
     <ROW>
      <code>![CDATA[Geetha]]</code>
      <category>![CDATA[Book]]</category>
     </ROW>
     <ROW>
      <code>![CDATA[Nokia]]</code>
      <category>![CDATA[mobile]]</category>
     </ROW>
    </ROWSET>
    Please help me on this. In my original query, I am selecting from a record type, and it is nested. So I can not change the query select * from data_tab

    Manjusha Muraleedas wrote:
    Is there another solution.

    Well, Yes and no...

    No, because a CDATA section is supposed to be built directly on the data source, so that the content is preserved as is, with no escaped character.
    Yes, you can transform the XML to add CDATA sections thereafter, but what would be the point? The XMLType constructor already still escaped characters that are not valid.

    Out of curiosity, why do you require CDATA instead of escape sequences?

  • How to generate XML from database data using a procedure?

    Hello

    I want to generate output as xml to database tables using a procedure. Can anyone suggest me on how to do this?

    Thanks for your time.

    Reel for the XML script

  • Generate report with a date picker. Help, please

    Hello

    I'm building an interactive report which should display the records corresponding to the date picker.

    I'm going to pull a report emp_name and LOAD_DT.  LOAD_DT is a date column from table1.

    Select "emp_name," LOAD_DT from table1

    where LOAD_DT =: P44_PICK_A_DATE;

    I chose article page to submit P44_PICK_A_DATE

    When I choose a date, he gives no error data

    Help, please.

    Thank you

    KJ

    Bind variable in the APEX will behave as strings. I normally apply TO_DATE(:P1_MY_DATE) without the date format and rely on application session formats / align.

    In your case, it would be more efficient to

    where load_date = to_date(:P44_PICK_A_DATE)

    unless you do something specific with date formats, then you would be just details the to_date

    Keep in mind, this also applies to the numbers, it would be more explicit

    where id = to_number(:P1_ID)

    Which is related to why there is a function v() and nv().

  • Demarshalling xml with the automatically generated class JAXB2.0 file does not work in jdeveloper 11.1.1.9

    I'm trying to familiarize themselves with JAXB in jdeveloper. I am facing some problems. There are a few test cases for which he works, for others it is not.

    Case 1:

    XML file is created manually. Respective java class to xmlelements is created manually. There is no ObjectFactory.java or jaxb.properties. Demarshalling this XML file works fine.

    Case 2:

    XML file is not created manually. All the respective java classes including ObjectFactory.java and jaxb.properties are generated using the widget ' JAXB 2.0 content XML Schema model "jdeveloper. I deleted ObjectFactory.java, jaxb.properties, and package - info.java. Demarshalling xml with this class file works fine.


    Case 3:

    Even in case 2, but this time I do not delete or change whatever it is generated and used as it is. It does not work. Get the following error.

    Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
    javax.xml.bind.UnmarshalException
     - with linked exception:
    [Exception [EclipseLink-25008] (Eclipse Persistence Services - 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.XMLMarshalException
    Exception Description: A descriptor with default root element rss was not found in the project]
      at org.eclipse.persistence.jaxb.JAXBUnmarshaller.handleXMLMarshalException(JAXBUnmarshaller.java:816)
      at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:109)
      at com.example.jaxbintro.JAXBExampleClass.main(JAXBExampleClass.java:36)
    Caused by: Exception [EclipseLink-25008] (Eclipse Persistence Services - 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.XMLMarshalException
    Exception Description: A descriptor with default root element rss was not found in the project
      at org.eclipse.persistence.exceptions.XMLMarshalException.noDescriptorWithMatchingRootElement(XMLMarshalException.java:129)
      at org.eclipse.persistence.internal.oxm.record.SAXUnmarshallerHandler.startElement(SAXUnmarshallerHandler.java:208)
      at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1598)
      at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:455)
      at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:401)
      at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:239)
      at org.eclipse.persistence.internal.oxm.record.XMLReader.parse(XMLReader.java:157)
      at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:688)
      at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:271)
      at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:258)
      at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:218)
      at org.eclipse.persistence.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:306)
      at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:106)
      ... 1 more
    

    The project is included in the annex to this issue. It is ready for use. More information in the commentary to the java code. The main class is JAXBExampleClass.java.

    What is the problem with case 3?

    OK, I've been messing around with codes generated a bit and found the solution. The problem is that the value of the XmlSchema namespace had error in package - info.java class. There is no specified XmlSchema namespace in the XML file. Thus, the given value in the package - info.java was wrong.

    @javax.xml.bind.annotation.XmlSchema (namespace = "http://www.example.org", value / / wrong, set it to an empty string or that of your xml file, if it has any)

    elementFormDefault =

    javax.xml.bind.annotation.XmlNsForm.QUALIFIED)

    package com.example.jaxbintro.xmlerror;

    After you set the namespace to the empty string, since my xml file do not have one, code ran very well.

    @javax.xml.bind.annotation.XmlSchema (namespace = "",)

    elementFormDefault =

    javax.xml.bind.annotation.XmlNsForm.QUALIFIED)

    package com.example.jaxbintro.xmlerror;

    The file package - info.java can also be removed and it will work. For more details on the package and XmlSchema annotated level, what information on the package class is for, be found in the following link.

    https://JAXB.Java.NET/NoNAV/jaxb20-FCS/docs/API/javax/xml/bind/annotation/XmlSchema.html

  • Change the content of the xml document as data selected with SQLX functions

    Hi all
    I have seen several examples of database xml documents using SQLX functions but they seem to be simple queries, which we reproduce the same forest of xml in all elements. What I'm trying to do is to create something like the following:


    < billing xmls = "http://blurb.com" >
    < header >
    < timestamp > 2008-12-11 13:28:46 < / timestamp >
    < source > ORCL < / source >
    < / header >
    < transaction and billing-answers >
    < invoice-transaction-response >
    < invoice-transaction-id > 36866320 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 092220082100 < / transaction-group-id >
    < ok >
    < charged to date > 2008-09-22T 10: 20:43 - 05:00 < / beak-date >
    < /OK. >
    < / billing-transaction-response >
    < invoice-transaction-response >
    < invoice-transaction-id > 37617490 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 112020082100 < / transaction-group-id >
    < error >
    reasons <>
    < reason >
    < text > impossible to derive information of customer SHIP_TO < / text >
    < / reason >
    < / reasons >
    < / error >
    < / billing-transaction-response >
    < / billing-transaction-answers >
    < / billing >


    I can see how to generate the individual components of the xml document, but I don't know how to put this together in a single select statement:


    SQL > SELECT XMLElement ("billing", XMLAttributes (http://blurb.com LIKE "xmls")
    2, XMLElement ("header"
    3, XMLElement ("timestamp", TO_CHAR (SYSDATE, ' YYYY-MM-DD HH24:MI:SS'))))
    4, XMLElement ("source", "ORCL'"))).extract('/*') xml
    5 FROM DUAL;

    XML
    ----------------------------------------------------------------------------------------
    < billing xmls = "http://blurb.com" >
    < header >
    < timestamp > 2008-12-11 13:28:46 < / timestamp >
    < source > ORCL < / source >
    < / header >
    < / billing >


    SQL > SELECT XMLElement ("billing transaction-answers"
    2, XMLAgg (XMLElement ("billing-transaction-reply"
    3, XMLElement ("billing transaction id", billing_transaction_id)
    4, XMLElement ("billing-transaction-type", billing_transaction_type)
    5, XMLElement ("transaction-group-id", transaction_group_id)
    6, XMLElement ("ok"
    7, XMLElement ("beak-date", billed_date))).extract('/*') xml
    8 FROM table_a
    9 status WHERE! = 'E';

    XML
    ----------------------------------------------------------------------------------------------------
    < transaction and billing-answers >
    < invoice-transaction-response >
    < invoice-transaction-id > 36866320 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 092220082100 < / transaction-group-id >
    < ok >
    < charged to date > 2008-09-22T 10: 20:43 - 05:00 < / beak-date >
    < /OK. >
    < / billing-transaction-response >
    < / billing-transaction-answers >



    MDACFS@CORPD23 > SELECT XMLElement ("billing transaction-answers"
    2, XMLAgg (XMLElement ("billing-transaction-reply"
    3, XMLElement ("billing transaction id", billing_transaction_id)
    4, XMLElement ("billing-transaction-type", billing_transaction_type)
    5, XMLElement ("transaction-group-id", transaction_group_id)
    6, XMLElement ("error"
    7, XMLElement ("patterns"
    8, XMLElement ("reason"
    9, XMLElement ("text", error_message))).extract('/*') xml
    10 FROM table_a
    * 11 situation WHERE = 'E '; *

    XML
    -------------------------------------------------------------------------------------
    < transaction and billing-answers >
    < invoice-transaction-response >
    < invoice-transaction-id > 37617490 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 112020082100 < / transaction-group-id >
    < error >
    reasons <>
    < reason >
    < text > impossible to derive information of customer SHIP_TO < / text >
    < / reason >
    < / reasons >
    < / error >
    < / billing-transaction-response >
    < / billing-transaction-answers >

    This is my first attempt to generate xml from the database if it is not a correct approach then please notify. Any help much appreciated.

    See you soon,.
    Paul.

    Given you already wrote each song as a separate statement which refers to what you want, you already have the concept and just need to merge the three queries SQL in one alone. Here is an example of the fusion of your first two SQL set statements.

    SELECT XMLElement("billing", XMLAttributes('http://blurb.com' AS "xmls")
            ,XMLElement("header"
              ,XMLElement("timestamp", TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'))
              ,XMLElement("source", 'ORCL')
             ),
             (SELECT XMLElement("billing-transaction-replies"
                      ,XMLAgg(XMLElement("billing-transaction-reply"
                       ,XMLElement("billing-transaction-id", rownum))))
               FROM dual
               CONNECT BY level <= 5
             )) rslt
    FROM DUAL;
    
    returns
    
    
         
    2008-12-12 09:21:39 ORCL
    1 2 3 4 5
  • form2xml generate xml files with '? ' for non-Latin characters

    I used form2xml in oracle 10 g costume to convert formulas 5 .fmb .xml. using the command:

    frmf2xml.bat OVERWRITE = YES myform.fmb

    Forms contains the set of Arabic characters, but the xml file is generated with the character "?", and the xml file is unusable ".

    What can I do to keep the Arabic characters in the generated xml files.

    Edit:

    I run form2xml on windows xp SP3 with Arabic support (codepage = 1256)

    The xml file is generated in UTF-8 format

    I solved the problem.

    Step 1: Search the registry for each NLS_Lang key and change its value to the codepage 1256 using regedit

    Step 2: in the Panel of control-region and language, I changed the language to be Arab

    Now everything is good

  • We can generate XML data without root element?

    Hi people,

    How I can genereate XML with element root?

    A response {: identifier of the thread = 2402325}

  • Line chart of several series with staggered data points

    Hello

    App of Hillary graphic sample includes an examples of charts and how to handle null values.

    https://Apex.Oracle.com/pls/Apex/f?p=36648:55

    I came across a scenario which goes a step further. If you have a series with a set of data points and another series that overlap, where a few data points are missing, for example:

    create table graph_lines (series number, thedate date, thevalue number);
    insert into graph_lines
    select 1 series
      ,add_months(trunc(sysdate,'yy'),rownum-1) thedate
      ,log(2,rownum) thevalue
    from dual
    connect by level <= 12
    union all
    select 2
      ,add_months(trunc(sysdate,'yy'),rownum-1)
      ,case when mod(rownum,3) =0 or rownum =2 then log(3,rownum) end
    from dual
    connect by level <= 12;
    

    I get the case where he's going to draw a line between the points that are next to each other, but the gaps it will display just the point

    graph.png

    Https://apex.oracle.com/pls/apex/f?p=73000:35 image

    I have no doubt a single this is the expected behavior, but I would like to know if anyone has any ideas on how to connect the dots.

    I thought about a snazzy model clause generates middle in my data points might work, but this seems heavy handed and a little scary.

    I thought that maybe there is a graphic solution?

    APEX 4.2.x

    Scott

    The idea of 'Null' removal was not all that possible. After testing it out, I found apex will be always generated empty points. Explicitly define the XML to have only the data points with values does nothing either.

    Because I thought it was a really interesting problem, I was wasting so much time on this :-). I was side on the reference guide and the user, modify the XML again and again and again.

    I hoped that, by defining a second category axis and set regional and datetime parameters, change of the shaft in one type datetime and specifying a main grid with every month, the table would be plot my data on this axis. Unfortunately, it seems as if this is ignored - a very frustrating experience. Anychart would just keep trace points with its own calculated intervals.

    Ultimately if I stumpled on a sort of difficulty, although I'm not sure how good it would be. There is a setting that you can set by using the custom XML part that ignores the missing data and the values of interpolation. It works well, but it always displays labels.

    https://Apex.Oracle.com/pls/Apex/f?p=11031:4 apex_demo/demo

    AnyChart | [AnyChart 6.x] How to connect mind lines...

    node - reference XML - AnyChart.Com Flash Chart Component

    With all these nodes, is it easy to miss what you need... It's a bit weird, but who "ignore the missing" points, you must set the value to "false"? :-)

  • Creating a line chart PDF-report generator model with APEX

    Hi all

    I would like to create a PDF report with a chart using Apex and the generator plugin model for Word.

    My Select statement, which I use as the report (shared components) query returns the data in the following way:

    Date Description amount

    ----                 -----                -----

    01.01.2014 has 1.2

    02.01.2014 has 1.3

    03.01.2014 has 0.5

    01.01.2014 B 0.3

    02.01.2014 B 4.5

    03.01.2014 B 4.8

    The XML document obtained, which creates the APEX, is:

    <? XML version = "1.0" encoding = "UTF-8"? >

    < DOCUMENT >

    < DATE > 08/10/2014 < / DATE >

    ADMIN < user_name > < / username >

    < > 102 APP_ID < / APP_ID >

    < APP_NAME > Oracle APEX AppBuilder < / APP_NAME >

    < /Title > < TITLE > graph

    < REGION ID = "0" >

    rowset <>

    < ROW >

    < date > < / Date >

    < DESCRIPTION > < / DESCRIPTION >

    < value > < / value >

    < / ROW >

    < / LINES >

    < / REGION >

    < / DOCUMENT >

    What I would like to have is a line graph with:

    • Date on the x-axis
    • Length of value on axis y
    • for each Description of Type single line

    The names and numbers of the discription varies a lot (as well as the values that they are related to the Description and date).

    What I tried:

    A lot, trying to make this work for 4 weeks, on and outside.

    Tried to edit the chart XML in Word, edit the SQL query, pivot the result SQL to get the Descriptions as columns and of course a lot of Googling.

    Please let me know if you have any advice.

    Thanks in advance,

    Thomas

    Oracle DB: 11g

    ApEx Version: 4.2.5.00.08

    Last Oracle BI Builder Plugin for Word template

    Finally found my Solution. What I was looking for is:

  • building XPath with the XML with the Namespace using PL SQL

    All trying to build the path to each node, when the XML code with no namespace, the following code works very well provide the result

    1 ~/

    2 ~ /Person/

    3 ~ /Person/ âge /

    4 ~ /Person/ homecity /

    5 ~ /Person/ nom /

    6 ~ /Person/ AccueilGuides/lat /

    7 ~ /Person/ AccueilGuides/name /

    8 ~ /Person/ homecity / long /

    But when the XML is changed to

    <person xmlns="urn:person" xmlns:lat="urn:lat">
    <name>Rob</name>
    <age>37</age>
    <homecity>
        <name>London</name>
        <lat>123.000</lat>
        <long>0.00</long>
    </homecity>
    </person>"

    The result of the code below the performance translates into just below result

    1~/
     2~/person/

    In the XML file above, XML namespace is not constant and varies for each XML. My requirement is to analyze the complete XML code, where I can read the XML with namespace and get the result that is mentioned below

    1~/
    2~/person/
    3~/person/age/
    4~/person/homecity/
    5~/person/name/
    6~/person/homecity/lat:lat/
    7~/person/homecity/name/
    8~/person/homecity/long/

    Can you please help me solve the issue mentioned. Thanks in advance. -Code snippet below:

    DECLARE
      l_File VARCHAR2(32000) := '<person>
    <name>Rob</name>
    <age>37</age>
    <homecity>
        <name>London</name>
        <lat>123.000</lat>
        <long>0.00</long>
    </homecity>
    </person>';
     
     l_Where_Clause VARCHAR2(100) := '/*';
     l_Append_Var   VARCHAR2(100) := '/';
     
     TYPE Ty_Paths IS TABLE OF VARCHAR2(1000) INDEX BY PLS_INTEGER;
     l_Ty_Paths      Ty_Paths;
     l_Ty_Paths_Temp Ty_Paths;
     
     TYPE Ty_Verifier IS TABLE OF VARCHAR2(1000) INDEX BY VARCHAR2(1000);
     l_Ty_Varifier Ty_Verifier;
     
    l_Prev_Query_Rec VARCHAR2(100);
    l_Index_Num      NUMBER := 0;
    l_Cur_Exec_Row   NUMBER := 0;
    BEGIN
     l_Ty_Paths(Nvl(l_Ty_Paths.COUNT, 0) + 1) := l_Append_Var;
     l_Cur_Exec_Row := 1;
     
     --Dbms_Output.put_line('Before entering the loop');
     
     LOOP
       l_Ty_Paths_Temp.DELETE;
      SELECT DISTINCT REPLACE(l_Append_Var || '/' || t.Xml || '/', '//', '/') BULK COLLECT
       INTO   l_Ty_Paths_Temp
      FROM   (SELECT Xmltype(Extract(VALUE(e), '/').Getstringval()) .Getrootelement() AS Xml
               FROM   TABLE(Xmlsequence(Extract(Xmltype(l_File), l_Where_Clause))) e) t;
     
      l_Ty_Varifier(Nvl(l_Ty_Varifier.COUNT, 0) + 1) := l_Append_Var;
      --Dbms_Output.put_line('L_TY_PATHS_TEMP.Count::'||L_TY_PATHS_TEMP.Count);
      IF l_Ty_Paths_Temp.COUNT > 0 THEN
         l_Index_Num := Nvl(l_Ty_Paths.COUNT, 0) + 1;
         FOR i IN l_Ty_Paths_Temp.FIRST .. l_Ty_Paths_Temp.LAST LOOP
            l_Ty_Paths(l_Index_Num) := l_Ty_Paths_Temp(i);
            --Dbms_Output.put_line('L_INDEX_NUM::'||L_INDEX_NUM);
            --Dbms_Output.put_line('L_TY_PATHS(L_INDEX_NUM)::'||L_TY_PATHS(L_INDEX_NUM));
            l_Index_Num := l_Index_Num + 1;
         END LOOP;
      END IF;
      --Dbms_Output.put_line('L_TY_PATHS.Count::'||L_TY_PATHS.Count);
      --Dbms_Output.put_line('L_TY_PATHS.Count::'||L_CUR_EXEC_ROW);
     
      IF (NOT l_Ty_Paths.EXISTS(l_Cur_Exec_Row + 1)) OR (l_Cur_Exec_Row = l_Ty_Paths.COUNT) THEN
         --Dbms_Output.put_line('Exiting');
         EXIT;
      ELSE
         --Dbms_Output.put_line('Inside the Else part');
     
         l_Cur_Exec_Row := l_Cur_Exec_Row + 1;
         l_Append_Var   := l_Ty_Paths(l_Cur_Exec_Row);
         l_Where_Clause := l_Ty_Paths(l_Cur_Exec_Row) || '*';
      END IF;
     
      --To Display the record:
         --Dbms_Output.put_line(L_TY_PATHS.Count);
      END LOOP;
      IF l_Ty_Paths.COUNT > 0 THEN
        FOR i IN l_Ty_Paths.FIRST .. l_Ty_Paths.LAST LOOP
          Dbms_Output.Put_Line(i || ' record is ' || l_Ty_Paths(i));
       END LOOP;
     END IF;
     
    END;

    Thank you.

    If you have patterns, it may be easier to work directly on them.

    Here's the idea:

    (1) install "Oracle XML DB manageability Packages", available on the code page for the XML DB sample: http://download.oracle.com/otn/samplecode/xdb_util.zip

    This is a set of utilities which allows us to annotate the XML schemas, to deal with the underlying or storage structure, and (this is the interesting part here) a few views of dictionary to describe the relational XSD structure.

    (it is now an integrated 12 c btw)

    (2) enter these two schemas:

    Start

    () dbms_xmlschema.registerSchema

    schemaURL-online "pacs.002.001.03S2.xsd."

    schemaDoc-online xmltype (bfilename('TEST_DIR','pacs.002.001.03S2.xsd'), nls_charset_id ('AL32UTF8'))

    local-online true

    genTypes-online fake

    genTables-online fake

    enableHierarchy-online dbms_xmlschema. ENABLE_HIERARCHY_NONE

    options-online dbms_xmlschema. REGISTER_BINARYXML

    );

    end;

    /

    Start

    () dbms_xmlschema.registerSchema

    schemaURL-online "SCTCvfBlkCredTrf.xsd."

    schemaDoc-online xmltype (bfilename('TEST_DIR','SCTCvfBlkCredTrf.xsd'), nls_charset_id ('AL32UTF8'))

    local-online true

    genTypes-online fake

    genTables-online fake

    enableHierarchy-online dbms_xmlschema. ENABLE_HIERARCHY_NONE

    options-online dbms_xmlschema. REGISTER_BINARYXML

    );

    end;

    /

    (3) the following query built all the paths of node defined by the main schema (SCTCvfBlkCredTrf.xsd), as well as the namespaces:

    with schema_list (schema_url, schema_owner) as)

    Select 'SCTCvfBlkCredTrf.xsd', 'OTN' from dual

    Union of all the

    Select sd.dep_schema_url, sd.dep_schema_owner

    of schema_list sl

    Join dba_xml_schema_dependency on sd.schema_url = sl.schema_url sd

    and sd.schema_owner = sl.schema_owner

    ),

    namespace_mapping (target_namespace, prefix) as long as)

    Select target_namespace

    , « ns » || ROW_NUMBER() (order target_namespace) as a prefix

    of user_xml_schema_namespaces

    where schema_url in (select schema_url from schema_list)

    ),

    () schema_nodes

    is_attr

    node_name

    max_occurs

    element_id

    parent_element_id

    target_namespace

    schema_url

    ) as)

    Select 0

    element_name as node_name

    xmlcast)

    XMLQUERY ('/ XS: ELEMENT / ' @maxOccurs passing returning content element)

    as varchar2 (10)

    )

    element_id

    parent_element_id

    target_namespace

    schema_url

    of user_xml_schema_elements

    where schema_url in (select schema_url from schema_list)

    Union of all the

    Select 1

    attribute_name as node_name

    null

    null

    element_id

    target_namespace

    schema_url

    of user_xml_schema_attributes

    where schema_url in (select schema_url from schema_list)

    )

    Select the level

    sn.node_name

    sn.max_occurs

    connect_by_isleaf as is_leaf

    sys_connect_by_path)

    -case when ns.prefix is not null and is_attr = 0 then ns.prefix | ':' end |

    -case when sn.is_attr = 1 then ' @' end |

    SN. NODE_NAME

    , '/'

    ) as xpath

    -, target_namespace

    of schema_nodes sn

    outer join ns namespace_mapping let ns.target_namespace = sn.target_namespace

    Connect prior sn.element_id = sn.parent_element_id

    Start with sn.schema_url = "SCTCvfBlkCredTrf.xsd".

    and sn.parent_element_id is null

    ;

    LEVEL MAX_OCCURS IS_LEAF XPATH NODE_NAME
    ----- ------------------ ---------- ------- ----------------------------------------------------------------------------------------------------------
    1 SCTCvfBlkCredTrf 0 /ns2:SCTCvfBlkCredTrf
    2 1 SndgInst /ns2:SCTCvfBlkCredTrf / ns2:SndgInst
    2 1 RcvgInst /ns2:SCTCvfBlkCredTrf / ns2:RcvgInst
    2 1 SrvcId /ns2:SCTCvfBlkCredTrf / ns2:SrvcId
    2 1 TstCode /ns2:SCTCvfBlkCredTrf / ns2:TstCode
    2 FType 1 /ns2:SCTCvfBlkCredTrf / ns2:FType
    2 FileRef 1 /ns2:SCTCvfBlkCredTrf / ns2:FileRef
    2 1 FileDtTm /ns2:SCTCvfBlkCredTrf / ns2:FileDtTm
    2 1 OrigFRef /ns2:SCTCvfBlkCredTrf / ns2:OrigFRef
    2 1 OrigFName /ns2:SCTCvfBlkCredTrf / ns2:OrigFName
    2 1 OrigDtTm /ns2:SCTCvfBlkCredTrf / ns2:OrigDtTm
    2 1 FileRjctRsn /ns2:SCTCvfBlkCredTrf / ns2:FileRjctRsn
    2 1 FileBusDt /ns2:SCTCvfBlkCredTrf / ns2:FileBusDt
    2 1 FileCycleNo /ns2:SCTCvfBlkCredTrf / ns2:FileCycleNo
    2 FIToFIPmtStsRptS2 1 /ns2:SCTCvfBlkCredTrf 0 / ns2:FIToFIPmtStsRptS2
    3 GrpHdr 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:GrpHdr
    4 MsgId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:GrpHdr / ns1:MsgId
    4 CreDtTm 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:GrpHdr / ns1:CreDtTm
    4 InstgAgt 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:GrpHdr / ns1:InstgAgt
    5 FinInstnId 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:GrpHdr / ns1:InstgAgt / ns1:FinInstnId
    6 BIC 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:GrpHdr / ns1:InstgAgt / ns1:FinInstnId / ns1:BIC
    3 OrgnlGrpInfAndSts 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts
    4 OrgnlMsgId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:OrgnlMsgId
    4 OrgnlMsgNmId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:OrgnlMsgNmId
    4 OrgnlNbOfTxs 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:OrgnlNbOfTxs
    4 OrgnlCtrlSum 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:OrgnlCtrlSum
    4 GrpSts 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:GrpSts
    4 StsRsnInf 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf
    5 Orgtr 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Orgtr
    6 id 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Orgtr / ns1:Id
    7 OrgId 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Orgtr / ns1:Id / ns1:OrgId
    8 1 BICOrBEI /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Orgtr / ns1:Id / ns1:OrgId / ns1:BICOrBEI
    5 ARS 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Rsn
    6 Cd 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Rsn / ns1:Cd
    6 Prtry 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:StsRsnInf / ns1:Rsn / ns1:Prtry
    4 NbOfTxsPerSts 2 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:NbOfTxsPerSts
    5 1 DtldNbOfTxs /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:NbOfTxsPerSts / ns1:DtldNbOfTxs
    5 1 DtldSts /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:NbOfTxsPerSts / ns1:DtldSts
    5 1 DtldCtrlSum /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:OrgnlGrpInfAndSts / ns1:NbOfTxsPerSts / ns1:DtldCtrlSum
    3 TxInfAndSts boundless 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts
    4 StsId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsId
    4 OrgnlInstrId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlInstrId
    4 OrgnlEndToEndId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlEndToEndId
    4 OrgnlTxId 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxId
    4 TxSts 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:TxSts
    4 StsRsnInf 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf
    5 Orgtr 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Orgtr
    6 id 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Orgtr / ns1:Id
    7 OrgId 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Orgtr / ns1:Id / ns1:OrgId
    8 1 BICOrBEI /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Orgtr / ns1:Id / ns1:OrgId / ns1:BICOrBEI
    5 ARS 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Rsn
    6 Cd 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Rsn / ns1:Cd
    6 Prtry 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:StsRsnInf / ns1:Rsn / ns1:Prtry
    4 InstdAgt 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:InstdAgt
    5 FinInstnId 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:InstdAgt / ns1:FinInstnId
    6 BIC 1 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:InstdAgt / ns1:FinInstnId / ns1:BIC
    4 OrgnlTxRef 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef
    5 IntrBkSttlmAmt 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:IntrBkSttlmAmt
    CTL 6 1 /ns2:SCTCvfBlkCredTrf/ns2:FIToFIPmtStsRptS2/ns1:TxInfAndSts/ns1:OrgnlTxRef/ns1:IntrBkSttlmAmt/@Ccy
    5 1 IntrBkSttlmDt /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:IntrBkSttlmDt
    5 DbtrAgt 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:DbtrAgt
    6 FinInstnId 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:DbtrAgt / ns1:FinInstnId
    7 1 BIC /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:DbtrAgt / ns1:FinInstnId / ns1:BIC
    5 CdtrAgt 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:CdtrAgt
    6 FinInstnId 0 /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:CdtrAgt / ns1:FinInstnId
    7 1 BIC /ns2:SCTCvfBlkCredTrf / ns2:FIToFIPmtStsRptS2 / ns1:TxInfAndSts / ns1:OrgnlTxRef / ns1:CdtrAgt / ns1:FinInstnId / ns1:BIC

    In fact, you would be generally extracted from mapping data in a separate query so that you can use it to build the dynamic with XMLNamespaces clause of the namespace.

    NB1: Also note that not all roads are needed, only those which IS_LEAF = 1 or MAX_OCCURS = "unlimited" or MAX_OCCURS > '1', then you can add a filter predicate in the query directly.

    NB2: The query does support all the features of XSD, for example, I've relied on the default behavior for attributes 'element_form_default' and 'attribute_form_default '.

  • XmlElement with dynamic data

    Hello

    I have a Table donnees_xml with 2 rows as follows:

    depose1 Field2
    xbrli:StartDate 09.11.2010
    10.11.2010 xbrli:EndDate

    I want to generate XML data and I tried the following

    for x in (select depose1, donnees_xml Field2)
    loop...
    var_filed1: = x.filed1
    Select xmlelement (var_filed1, x.filed2)
    of donnees_xml;
    .....

    the problem is that the generated output looks like this
    < var_filed1 > 09.11.2010 < var_filed1 > < var_filed1 > < var_filed1 > 10.11.2010

    Is there a way to get a result like this

    < xbrli:Startdate > 09.11.2010 < / xbrli:Startdate > < xbrli:enddate > 10.11.2010 < / xbrli:enddate >

    Thanks in advance

    MDK.

    1. Please read the guidelines of display ad. It is much more polite provide a script to configure your examples of data then just typing in values, since it allows to save the person who takes the time to solve your problem of having to create said...

    for example

    SQL> create table XBRL_ITEMS
      2  (
      3    ITEM_NAME VARCHAR2(512),
      4    ITEM_VALUE VARCHAR2(512)
      5  )
      6  /
    
    Table created.
    
    SQL> insert into XBRL_ITEMS values ('xbrli:Startdate','09.11.2010')
      2  /
    
    1 row created.
    
    SQL> insert into XBRL_ITEMS values ('xbrli:enddate','10.11.2010')
      2  /
    
    1 row created.
    
    SQL> commit
      2  /
    

    2. Please indicate what database, you work with

    for example

    SQL> select * from V$VERSION
      2  /
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE    11.2.0.2.0      Production
    TNS for 64-bit Windows: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    
    SQL>
    

    The answer is by using evalname

    for example

    SQL> set lines 128
    SQL> column XBRL_ITEM FORMAT A128
    SQL> select xmlElement(evalname(ITEM_NAME),ITEM_VALUE) XBRL_ITEM
      2    from XBRL_ITEMS
      3  /
    
    XBRL_ITEM
    --------------------------------------------------------------------------------------------------------------------------------
    09.11.2010
    10.11.2010
    

    However, your output is junk... The date is not correctly formatted by XML / XBRL standards and the xbrli of namespace prefix is not defined. These two will probably cause you problems if you try to do any further XML processing on the results of your query.

    The correct solution is

    SQL> select XMLELEMENT(evalname(ITEM_NAME),xmlAttributes('http://www.xbrl.org/2003/instance' as "xmlns:xbrli"),to_char(to_date(ITEM_VALUE,'DD.MM.YYYY'),'YYYY-MM-DD')) XBRL_ITEM
      2    from XBRL_ITEMS
      3  /
    
    XBRL_ITEM
    --------------------------------------------------------------------------------------------------------------------------------
    2010-11-09
    2010-11-10
    

    Also, if you treat XBRL you will want to monitor for an announcement of the Extension of XBRL Oracle XML DB in the very near future...

    Published by: mdrake on November 28, 2010 07:28

  • SQL to generate the intervals from date of 6 months each, between two date ranges

    Hi all

    I looked in the forums, if someone uses CREATE_CHUNKS_BY_SQL for dates, but no luck.
    I want to update a table using pieces of dates.
    I need to generate date ranges to divide them by pieces.

    I have a table where I know that max (sales_date) and min (sales_date).
    Lets say max (sales_date): min (sales_date) 01/01/2008: 31/10/2010

    I want to break in intervals of 6 months (180 days) as below:
    chunk_id     start_date     end_date
    --------     ----------     --------
      1          01/01/2008     06/30/2008
      2          01/07/2008     12/31/2008
      3          01/01/2009     06/30/2009
      4          01/07/2009     12/31/2009
      5          01/01/2010     06/30/2010
      6          01/07/2010     10/31/2010
    He didn't exactly finish end of the month. Basically, I need these beaches of dates at apart 180 days.

    I appreciate if someone can throw some ideas on this.

    Thank you
    Raj.

    Hi, Raj,

    Sorry, it is unclear what you are asking.

    To generate a list of dates starting with min_sales_date and including all the 180 days after that up to (but not beyond) max_sales_date:

    WITH     got_params     AS
    (
         SELECT     DATE '2008-01-01'     AS min_sales_date
         ,     DATE '2010-10-31'     AS max_sales_date
         FROM     dual
    )
    SELECT     min_sales_date + (180 * (LEVEL - 1))     AS grp_start_date
    FROM     got_params
    CONNECT BY     LEVEL <= CEIL ( ( (max_sales_date - min_sales_date)
                                    + 1
                           )
                         / 180
                         )
    ;
    

    Output:

    GRP_START_D
    -----------
    01-Jan-2008
    29-Jun-2008
    26-Dec-2008
    24-Jun-2009
    21-Dec-2009
    19-Jun-2010
    

    December 16, 2010 is 180 days after June 19, 2010, but it is not displayed, because is after max_sales_date, which is 31 October 2010.

    I hope this helps you.
    Whenever you have any questions, post a small example of data (CREATE TABLE and INSERT statements) and the results desired from these data.

  • Is it possible to update a chart "XY" whenever a point is generated as with a "table"?

    Is it possible to update a chart "XY" whenever a point is generated as with a "table"?

    In the attachment, the XY graph, 'OUT' is updated once the loop is completed. I would like to be updated as data is generated inside the loop. Is this possible?

    Thank you.

    To make it work, you need to do the full table available inside the loop.  This means that you cannot use a tunnel of indexing at the exit to build the array. Instead, you must use a shift register and build the table inside the loop.

    This will do what you want.  It would have been easier to show you if you had posted your code.

Maybe you are looking for