Generation of XML in the query

IM generation of xml from a table which works very well. Here is an example of what Im doing.


Oracle Database 10 g Express Edition Release 10.2.0.1.0 - product

create table ("VTEST"
VARCHAR2 (50 BYTE) "NUMERO_PROJET."
VARCHAR2 (50 BYTE) "ORDER_NUMBER"
VARCHAR2 (50 BYTE) "PART_NUMBER",.
VARCHAR2 (50 BYTE) "COMPANY."
VARCHAR2 (50 BYTE) "PART_DESCRIPTION."
VARCHAR2 (50 BYTE) "PART_DETAILS."
VARCHAR2 (50 BYTE) "SUB_NUMBER".
)
-DROP TABLE VTEST

INSERT INTO vtest VALUES (12345, 111, 19, '1', 'DESC1', 'DETAILS1', 999);
INSERT INTO vtest VALUES (12387, 111, 25, 'COMPANY2', 'DESC2', 'DETAILS2', 888);
INSERT INTO vtest VALUES (12343, 569, 96, 'COMPANY3', 'DESC3', 'Détails3', 777);
INSERT INTO vtest VALUES (12340, 274, 13, 'Mémorandum4', 'DESC4', 'DETAILS4', 666);
INSERT INTO vtest VALUES (15645, 385, 13, 'COMPANY5', 'DESC5', 'DETAILS5', 555);
INSERT INTO vtest VALUES (22347, 996, 13, 'COMPANY6', 'DESC6', 'DETAILS6', 444);
INSERT INTO vtest VALUES (35622, 825, 13, '1', 'DESC7', 'DETAILS7', 333);
INSERT INTO vtest VALUES (42335, 111, 19, '1', 'DESC8', 'DETAILS8', 222);

-SELECT * FROM VTEST

SELECT
XMLElement ("APP",
XMLAttributes (VTEST as "NAME")
, XMLElement ("WEB",
XMLAgg)
XMLElement ("numero_projet",
XMLAttributes (NVL("ORDER_NUMBER",' ') AS ORDER_NUMBER,
NVL("PART_NUMBER",' ') ACE PART_NUMBER,
NVL("COMPANY_NAME",' ') ACE COMPANY_NAME,
NVL("PART_DESCRIPTION",' ') AS PART_DESCRIPTION,
NVL("PART_DETAILS",' ') AS PART_DETAILS,
NVL("SUB_NUMBER",' ') AS SUB_NUMBER
),

XMLForest)
NVL("ORDER_NUMBER",' ') ACE ORDER_NUMBER,
NVL("PART_NUMBER",' ') ACE PART_NUMBER,
NVL("COMPANY_NAME",' ') ACE COMPANY_NAME,
NVL("PART_DESCRIPTION",' ') AS PART_DESCRIPTION,
NVL("PART_DETAILS",' ') AS PART_DETAILS,
NVL("SUB_NUMBER",' ') AS SUB_NUMBER
)
)
)
)
)

OF VTEST


It works very well.
But I also want to generate xml data a second where each item is listed with unique values as follows:

< APP NAME = "VTEST" >
< WEB >
< ORDER_NUMBERS >
< > 111 ORDER_NUMBER < / ORDER_NUMBER >
< > 569 ORDER_NUMBER < / ORDER_NUMBER >
< > 274 ORDER_NUMBER < / ORDER_NUMBER >
< > 385 ORDER_NUMBER < / ORDER_NUMBER >
< > 996 ORDER_NUMBER < / ORDER_NUMBER >
< > 825 ORDER_NUMBER < / ORDER_NUMBER >
< / ORDER_NUMBERS >
< PART_NUMBERS >
< PART_NUMBER > 19 < / PART_NUMBER >
< PART_NUMBER > 25 < / PART_NUMBER >
< > 96 PART_NUMBER < / PART_NUMBER >
< PART_NUMBER > 13 < / PART_NUMBER >
< / PART_NUMBERS >
< COMPANY >
company 1 < COMPANY_NAME > < / COMPANY_NAME >
COMPANY2 < COMPANY_NAME > < / COMPANY_NAME >
COMPANY3 < COMPANY_NAME > < / COMPANY_NAME >
COMPANY4 < COMPANY_NAME > < / COMPANY_NAME >
COMPANY5 < COMPANY_NAME > < / COMPANY_NAME >
COMPANY6 < COMPANY_NAME > < / COMPANY_NAME >
< / COMPANIES >
< PART_DESCRIPTIONS >
DESC1 < PART_DESCRIPTION > < / PART_DESCRIPTION >
DESC2 < PART_DESCRIPTION > < / PART_DESCRIPTION >
DESC3 < PART_DESCRIPTION > < / PART_DESCRIPTION >
< PART_DESCRIPTION > DESC4 < / PART_DESCRIPTION >
< PART_DESCRIPTION > DESC5 < / PART_DESCRIPTION >
< PART_DESCRIPTION > DESC6 < / PART_DESCRIPTION >
< PART_DESCRIPTION > DESC7 < / PART_DESCRIPTION >
< PART_DESCRIPTION > DESC8 < / PART_DESCRIPTION >
< / PART_DESCRIPTIONS >
< PART_DETAILS >
< PART_DETAILS > DETAILS1 < / PART_DETAILS >
< PART_DETAILS > DETAILS2 < / PART_DETAILS >
< PART_DETAILS > details3 < / PART_DETAILS >
< PART_DETAILS > DETAILS4 < / PART_DETAILS >
< PART_DETAILS > DETAILS5 < / PART_DETAILS >
< PART_DETAILS > DETAILS6 < / PART_DETAILS >
< PART_DETAILS > DETAILS7 < / PART_DETAILS >
< PART_DETAILS > DETAILS8 < / PART_DETAILS >
< / PART_DETAILS >
< SUB_NUMBERS >
< SUB_NUMBER > 999 < / SUB_NUMBER >
< SUB_NUMBER > 888 < / SUB_NUMBER >
< SUB_NUMBER > 777 < / SUB_NUMBER >
< SUB_NUMBER > 666 < / SUB_NUMBER >
< SUB_NUMBER > 555 < / SUB_NUMBER >
< SUB_NUMBER > 444 < / SUB_NUMBER >
< SUB_NUMBER > 333 < / SUB_NUMBER >
< SUB_NUMBER > 222 < / SUB_NUMBER >
< / SUB_NUMBERS >
< / WEB >
< / APP >


Ive been trying and just can't understand it. Thus, each section formularies its unique values.
Thanks for any help.

A similar technique that your previous question - deduplicate each section by itself:

select
xmlelement(
   app
 , xmlattributes('VTEST' as name)
 , xmlelement(
      web
    , xmlforest(
         (
            select xmlagg(xmlelement(order_number,order_number) order by order_number)
              from ( select distinct order_number from vtest )
         ) as order_numbers
       , (
            select xmlagg(xmlelement(part_number,part_number) order by part_number)
              from ( select distinct part_number from vtest )
         ) as part_numbers
       /* etc */
      )
   )
)
from dual
/

I just got the order_numbers and part_numbers and leave the rest for you ;-)

Maybe it's not the most effective method that it accesses the table several times. But xmlagg does not support a 'distinct' clause, as for example to count (distinct order_number), so I can't think offhand of a more effective solution.

Maybe if you are very strong to create XLS stylesheets to transform your original XML output for output desired using XQuery - then perhaps it could be done without access to the table several times. But probably it would be more effective anyway, because it would then do a job a lot of in-memory (or TEMP).

Tags: Database

Similar Questions

  • Internal XML to the query with join

    I have a CF page that reads an XML file in a query using < cffile > XMLParse and QueryAddrow.

    I then do a QoQ on the result and voila! I have my page.  I hide the query for 8 hours and the XML file is only reread this cache expires.  It works well.

    My problem now is that the file contains data from three tables of database instead of one, so I need to make an inner join on the tables.  But I can't do a t/t with an inner join.

    Does anyone know a way for me to do this?

    Oh, didn't know that.  How about interweaving of QofQ?  Join Query1 and Query2 requests in a new query, then join for 3 statement?

  • The query cannot be parsed? and the generation of a procedure

    I am
    make a small application in Oracle10g XE, I need to always run the
    next question, I'm currently under option from the Source of the region



    DECLARE
    utl_file.file_type v1.
    VARCHAR2 (100) v2;
    Start
    v1: = UTL_FILE.fopen ('PUBLIC_ACCESS', 'prueb': to_char (sysdate, 'yyyymmdd') |'. txt', 'w');
    for rec in (SELECT ' 01'
    || LPAD(:P17_EAN,13,0)
    || TO_CHAR (TRUNC (SYSDATE), 'YYYYMMDD')
    || LPAD(:P17_BANCO,3,0)
    || LPAD(:P17_NUME_CUENTA,15,0)
    || ' ' heading
    In a loop OF the DOUBLE)
    UTL_FILE.put_line (v1, Rec.encabezado);
    end loop;
    for rec1 in (select '02'
    || LPAD (PG. CODIGO_CUENTA, 25, 0)
    || LPAD (PG. VALOR_PAGO, 13, 0)
    || LPAD (PG. COD_PROCEDENCIA, 2, 0)
    || LPAD (ROWNUM + 1, 7, 0)
    || ' 'body ' '.
    PAGOS PG
    WHERE PG. = EAN: P17_EAN) loop
    UTL_FILE.put_line (v1, REC1. Body);
    end loop;
    for in rec2 (select ' 09'
    || LPAD (COUNT (PG. CODIGO_CUENTA), 9, 0)
    || LPAD (SUM (PG. VALOR_PAGO), 18, 0)
    || ' ' final
    OF PAGOS PG
    WHERE PG. FECHA_PAGO = (SELECT TO_CHAR(SYSDATE,'DD/MM/YY') FROM DUAL)
    AND PG. = EAN: P17_EAN) loop
    UTL_FILE.put_line (v1, rec2.final);
    end loop;
    UTL_FILE.fclose (v1);
    exception
    while others then
    dbms_output.put_line (SQLERRM);
    end;

    but I get the following error, which I correct?

    {color: #ff0000} * error * {color}
    {color: #ff0000} 1 {color} error < ul class = "htmldbUlErr" > < li >
    {color: #ff0000} Query cannot be
    analysed in the generator. If you believe that your query is syntactically
    correct, check the generic "columns" box below the source of the region
    to go forward without analysis.
    The query cannot be parsed, the cursor is not open or function
    Returns a SQL returned no value. {color}

    < /li >
    < /ul >
    Selecting the generic use column names (analysis of query runtime only) and run it I get the following error

    {color: #ff0000} could not parse the SQL query:
    The query cannot be parsed, the cursor is not yet open or a function returning a SQL query returned no value.
    {color}

    {color: #0000ff} * please explain to me how to convert the previous query in a procedure
    and how do I run by a button... I generate the same file? * {color}

    I appreciate your attention...
    Nice day...

    REYNEL sarmouk

    Hello Reynel Salazar,

    >
    REYNEL wrote

    * Please explain to me how to convert the previous query in a procedure
    and how do I run by a button... I generate the same file? *
    >

    Create Or Replace Procedure Parse_EAN( pi_EAN        In Number
                                         , pi_Banco      In Number
                                         , pi_Num_Cuenta In Number )
    As
      v1 utl_file.file_type;
      v2 varchar2(100);
    Begin
      v1 := utl_file.fopen('PUBLIC_ACCESS','prueb' || to_char(sysdate, 'yyyymmdd') || '.txt', 'w');
    
      v2 := '01' || LPAD(pi_EAN,  13, 0) || TO_CHAR(TRUNC(SYSDATE),  'YYYYMMDD') ||
                    LPAD(pi_Banco, 3, 0) || LPAD(pi_Num_Cuenta, 15, 0) || ' ';
      utl_file.put_line(v1, v2);
    
      For rec in (SELECT '02' || LPAD(PG.CODIGO_CUENTA,  25, 0) || LPAD(PG.VALOR_PAGO, 13, 0) ||
                                 LPAD(PG.COD_PROCEDENCIA, 2, 0) || LPAD(ROWNUM + 1, 7, 0) || ' ' cuerpo
                    FROM PAGOS PG
                   WHERE PG.EAN = pi_EAN) Loop
        utl_file.put_line(v1, rec.cuerpo);
      End Loop;
    
      For rec in (SELECT '09' || LPAD(COUNT(PG.CODIGO_CUENTA), 9, 0) ||
                                 LPAD(SUM(PG.VALOR_PAGO), 18, 0) || ' ' final
                    FROM PAGOS PG
                   WHERE PG.FECHA_PAGO = TO_DATE(TO_CHAR(SYSDATE, 'DD/MM/YYYY'))
                      AND PG.EAN = pi_EAN) Loop
        utl_file.put_line(v1, rec.final);
      End Loop;
    
      utl_file.fclose(v1);
    Exception
      when others then
        dbms_output.put_line(sqlerrm);
    End;
    

    Run the procedure

    exec parse_ean(5050,123,12345);
    

    output

    01000000000505020090316123000000000012345
    0200000000000000000000000010000000000100100000002
    0200000000000000000000000020000000000200110000003
    0200000000000000000000000030000000000300120000004
    0200000000000000000000000040000000000400130000005
    0200000000000000000000000050000000000500140000006
    09000000005000000000000001500 
    

    Kind regards

    Christian Balz

  • Loading XML into the relational Table data

    Hello

    I get a generated XML file to other tools (Windows), I am trying to create a Linux shell script that will gather the necessary XML file to my Linux server, then ask Oracle to use this file to load the XML data into a relational table. This activity and the data will be needed on an ongoing basis.

    I tried two ways. First, I loaded the XML document into the database and tried to extract the data directly from the document, but it does not work. Now I want to try to read the data directly from the file on the server through select, however I don't get all the returned data. In the Select statement below, I am trying to query the data to see what is returned for my tests.

    Create Table ci_results_table (transactionID Varchar2 (100), //transactionID should be PrimaryKey but became errors in test of insert, PK so deleted NULL value)

    message Varchar2 (200),

    This Varchar2 (50).

    XMLType of the ProcessedDate,

    status Varchar2 (50).

    sourceFile VarChar2 (100));

    Select x.*

    from XMLTable)

    ' TSPLoadResults/results '.

    PASSAGE xmltype (bfilename('CMDB_DEVADHOCRESULTS_DIR','LoadResults-HP_146.results.xml'), nls_charset_id ('AL32UTF8'))

    COLUMNS

    transactionID PATH Varchar2 (100) 'TransactionID '.

    Result XMLType PATH 'result ',.

    Message Varchar2 (200) PATH "Message."

    PrimaryKey Varchar2 (50) PATH "PrimaryKey"

    Date of ProcessedDate path "ProcessedDate."

    Status Varchar2 (50) PATH "Status."

    SourceFile VarChar2 (100) PATH "SourceFileName.

    ) x

    ;

    Eventually, I'll have to build on that to limit the returned data to records where SourceFileName is like '% PA' and insert what is returned in to the ci_results_table. Attached is an example of the XML results file I am trying to load, it is named "ResultsTransformedtoUnix" because I used dos2Unix to convert Unix which can be good or bad. (I send the output file must be converted to the format BACK until the other application can read). Original (before converting Unix) file named in the script is also attached.

    Help, please. Thank you!

    Hello

    I see some bad things in your query.

    (1) obvious one, explaining why you get all the data: there is a typing error in the XQuery expression, there 'result' not'slead.

    (2) ProcessedDate can be extracted as a date (at least not directly) because it actually represents a timestamp, use the TIMESTAMP WITH time ZONE HOURS and cast back to DATE data type in the SELECT clause

    (3) transactionID is an attribute, it must be accessible with ' @' (or ' attribute:' axis)

    (4) if the encoding of file really is ISO-8859-1 as suggested in the prologue, then do not use AL32UTF8 but the name of the corresponding character set: WE8ISO8859P1

    Here is the query to work:

    select x.transactionID
         , x.Message
         , x.Primarykey
         , cast(x.ProcessedDate as date) ProcessDate
         , x.Status
         , x.SourceFile
    from XMLTable(
           '/TSPLoadResults/Result'
           PASSING xmltype(bfilename('XML_DIR','LoadResults-HP_146.results.xml'), nls_charset_id('WE8ISO8859P1'))
           COLUMNS
             transactionID Varchar2(100)            PATH '@transactionID',
             Message       Varchar2(200)            PATH 'Message',
             PrimaryKey    Varchar2(50)             PATH 'PrimaryKey',
             ProcessedDate timestamp with time zone PATH 'ProcessedDate',
             Status        Varchar2(50)             PATH 'Status',
             SourceFile    VarChar2(100)            PATH 'SourceFileName'
         ) x
    ;
    

    Directly on the file using this query will only be decently (for large files) on 11.2.0.4 and beyond.

    On older versions, first load the file into a (temporary) XMLType column with binary XML storage and CHOOSE from there.

    because I used dos2Unix to convert Unix which can be good or bad.

    This conversion should not be necessary.

  • Help file XML generating the table data

    Hello, I am new to generate XML and tried a host of options, including using variants of XMLELEMENT, XMLGEN and XMLDOM, all to nothing does not. I need to write code that will generate an XML file that will produce results such as below. Data will be taken from a table called cmdb_formatted_test and number of lines may vary. The code below seems to work almost however I get an error "not enough values. The select works if I don't mean to put the clob data in the variable.

    [code]

    DECLARE

    l_file_name VARCHAR2 (30);

    l_file_path VARCHAR2 (200);

    l_xmldoc CLOB.

    BEGIN

    l_file_path: = 'cmdb_dir ';

    l_file_name: = 'TEST_XML.xml ';

    Select xmlelement ("xmlns:ns1 = 'CILoad' ns1:CIList'),

    XMLELEMENT ("ns1:ConfigurationItem", XMLATTRIBUTES (c.transactionID, c.action),

    XMLELEMENT ("ns1:RequiredElements",

    XMLELEMENT ("ns1:AssetTag", c.assettag)

    XMLELEMENT ("ns1:CIName", c.ciname)

    XMLELEMENT ("ns1:FdaStatus", c.fdastatus)

    XMLELEMENT ("ns1:OwnerGroup", c.ownergroup)

    XMLELEMENT ("ns1:OwnerPerson", c.ownerperson)

    XMLELEMENT ("ns1:SoxCritical", c.soxcritical)

    XMLELEMENT ("ns1:Status", c.status)

    XMLELEMENT ("ns1:Type", c.type)

    ) like"ADDITIONS".

    ). getclobval()

    in l_xmldoc

    of cmdb_formatted_test c;

    dbms_xslprocessor.clob2file (l_xmldoc, l_file_path, l_file_name, nls_charset_id ('UTF8'));

    END;

    /

    [/ code]

    Need for XML output is attached

    You don't have to try things at random, all of this is well documented, with examples:

    Generate XML from the database data

    Your query, although not correct, returns two columns. That's why Oracle is complaining when you try to search in a single variable.

    Not tested, but the following should be close to what you want:

    DECLARE
    
      l_file_name      varchar2(30) := 'TEST_XML.xml';
      l_file_path      varchar2(30) := 'CMDB_DIR'; -- you probably want uppercase here
      l_xmldoc         clob;
    
    BEGIN
    
      select '' ||
             xmlserialize(document
               xmlelement("ns1:CIList"
               , xmlattributes('CILoad' as "xmlns:ns1")
               , xmlagg(
                   xmlelement("ns1:ConfigurationItem"
                   , xmlattributes(
                       c.transactionID as "transactionID"
                     , c.action as "action"
                     )
                   , xmlelement("ns1:RequiredElements"
                     , xmlelement("ns1:AssetTag", c.assettag)
                     , xmlelement("ns1:CIName", c.ciname)
                     , xmlelement("ns1:FdaStatus", c.fdastatus)
                     , xmlelement("ns1:OwnerGroup", c.ownergroup)
                     , xmlelement("ns1:OwnerPerson", c.ownerperson)
                     , xmlelement("ns1:SoxCritical", c.soxcritical)
                     , xmlelement("ns1:Status", c.status)
                     , xmlelement("ns1:Type", c.type)
                     )
                   , xmlelement("ns1:OptionalElements", null)
                   )
                 )
               )
               as clob
             )
      into l_xmldoc
      from cmdb_formatted_test c ;
    
      dbms_xslprocessor.clob2file(l_xmldoc, l_file_path, l_file_name, nls_charset_id('AL32UTF8'));
    
    END;
    /
    
  • To get the result of the query as the column format delimited

    Hi all

    I'm running under query to get database information using an automation tool. The output of the query we receive does not come with the defined value. Is there a way I can change the query to output delimited?

    Please provide your valuable contributions

    SELECT * FROM THE USER. DROP_DOWN_VALUE

    WHERE (SELEC_ID IN (SELECT ID FROM THE USER. PLACE WHERE FIELD_NAME = 'TABLE_NAME'))

    AND DEPENDENT_FIELD = 'XXXXXXX '.


    The query output:


    43202TRANSFORMERTRANSFORMERXXXXXXX


    Expected results:


    43202, TRANSFORMER, TRANSFORMER, XXXXXXX


    Thanks and greetings

    Riyas Hussain

    I'm running under query to get database information using an automation tool. The output of the query we receive does not come with the defined value. Is there a way I can change the query to output delimited?

    Just add / * csv * / in front of the query.

    See examples of different formats in this article by Sql Dev PM Jeff Smith (a frequent contributor of forum):

    http://www.thatjeffsmith.com/archive/2012/05/formatting-query-results-to-CSV-in-Oracle-SQL-Developer/

    SELECT / * csv * / * FROM scott.emp;

    SELECT / * xml * / * FROM scott.emp;

    SELECT / * html * / * FROM scott.emp;

    SELECT / * delimited * / * FROM scott.emp;

    SELECT / * INSERT * / * FROM scott.emp;

    SELECT / * charger * / * FROM scott.emp;

    SELECT / * fixed * / * FROM scott.emp;

    SELECT / * text * / * FROM scott.emp;

  • Generation of XML files in oracle procedure

    I have to generate a SQL query as XML files:

    • If the number of records in the query result exceeds 40 000 then the data must be divided into two XML files with different file names.

    Following XML file format:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <EMP_INFO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <EMP>
      <CR_NO>12345678</CR_NO>
      <EMPLOYER_NAME>ABC</EMPLOYER_NAME>
      <ID_NO>12345678</ID_NO>
      <EMPLOYEE_NAME>ABC</EMPLOYEE_NAME>
      </EMP>
      <EMP>
      <CR_NO>12345678</CR_NO>
      <EMPLOYER_NAME>XYZ</EMPLOYER_NAME>
      <ID_NO>12345678</ID_NO>
      <EMPLOYEE_NAME>ABC</EMPLOYEE_NAME>
      </EMP>
    </EMP_INFO>
    
    
    
    • Also, an XML file will contain information from XML file with the number of records in each file:
    <?xml version="1.0" encoding="utf-8"?>
    <Files>
      <File>
        <FileName>ABCD071120130001.xml</FileName>
        <CountOfRecords>499</CountOfRecords>
      </File>
    
    
      <File>
        <FileName>ABCD071120130002.xml</FileName>
        <CountOfRecords>9</CountOfRecords>
      </File>
    
    
    </Files>
    
    
    

    My PL SQL procedure follows, but throws an error:

    CREATE OR REPLACE PROCEDURE P_DATAXML AS
    BEGIN
    
      DECLARE
        XML_PROLOG    CLOB := '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
        xml_header    clob;
        xml_trailer   clob;
        tmp_xml       clob;
        tmp_file      clob;
      
        CURSOR C_REC IS  
        SELECT XMLELEMENT("EMP_INFO",
                                XMLELEMENT("CR_NO", "1234" ),
                                XMLELEMENT("EMPLOYER_NAME", "ABC" ),
                                XMLELEMENT("ID_NO", "9876541" ),
                                XMLELEMENT("EMPLOYEE_NAME", "XYZ" )
                 ).GETCLOBVAL() AS DATA_XML
               
          FROM TABLES;
      
      BEGIN
    
        -- create the temporary clob :
        DBMS_LOB.CREATETEMPORARY(TMP_FILE, TRUE);
      
        -- fetch records
        for r in C_REC loop
          DBMS_LOB.append(TMP_FILE, xml_prolog);
          DBMS_LOB.append(TMP_FILE, r.DATA_XML);
        end loop;
    
    
        -- write file to directory :
        dbms_xslprocessor.clob2file(TMP_FILE, 'CDIR', 'test.xml', nls_charset_id('AL32UTF8'));
        dbms_lob.freetemporary(TMP_FILE);
    
      END;
    
    END P_DATAXML;
    
    
    

    After my initial coding, I get the error made his first appearance on "dbms_xslprocessor.clob2file":

    ORA-21560: 3 argument is null, invalid or out of range

    ORA-06512: at "SYS." DBMS_LOB", line 991

    ORA-06512: at "XDB". DBMS_XSLPROCESSOR', line 324

    What could be wrong?

    You were on the right track. Continue to use SQL/XML, in special XML files XMLAGG logical global functions.

    The following should answer your initial needs.

    For this demonstration, I used resources. Table EMPLOYEES and a batch size of 100. It generates three files, 'file0001.xml' (100 records), "file0002.xml" (7 records) and a summary file:

    DECLARE

    file_desc_array xmlsequencetype: = xmlsequencetype();

    CLOB file_desc_xml;

    prolog1 CLOB: = '';

    prolog2 CLOB: = '';

    BEGIN

    for r in)

    Select xmlserialize (document

    XmlElement ('method'

    , xmlattributes ("http://www.w3.org/2001/XMLSchema-instance" under the name "xmlns: xsi" "")

    xmlagg)

    XmlElement ("EMP"

    xmlelement ("ID_NO", e.employee_id)

    , xmlelement ("EMPLOYEE_NAME", select)

    )

    )

    )

    ) as xmldoc

    --< generating="" summary="" record="">

    xmlelement ("file",

    xmlelement ("filename",

    , "file" | TO_CHAR (trunc ((rownum-1)/100) + 1, "fm0999"). ".xml".

    )

    xmlelement ("CountOfRecords", Count

    ) as file_desc

    -->

    , "file" | TO_CHAR (trunc ((rownum-1)/100) + 1, "fm0999"). '.xml' as file name

    of e hr.employees

    Group of trunc ((rownum-1)/100)

    )

    loop

    dbms_xslprocessor.clob2file (prolog1 | r.xmldoc, 'TEST_DIR', r.filename, nls_charset_id ('AL32UTF8'));

    file_desc_array.extend;

    file_desc_array (file_desc_array. (Last): = r.file_desc;

    end loop;

    Select xmlserialize (document

    XmlElement ("Files", xmlagg (column_value))

    )

    in file_desc_xml

    table (file_desc_array);

    dbms_xslprocessor.clob2file (prolog2 | file_desc_xml, 'TEST_DIR', 'summary.xml', nls_charset_id ('AL32UTF8'));

    END;

    /

  • Structured XMLIndex not used by the query

    Hello

    We try to use XMLIndexes structured for a query. But they are not used. A sample of similar work is as follows:


    -Oracle Database 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production

    Example of XML data on the XMLTYPE column is:

    <?xml version="1.0" encoding="UTF-8" standalone='yes'?>  
    <abc:tagOne preparationTime="2012-10-17T13:01:23.000Z" schemaVersion="1.3.9.0" xsi:schemaLocation="" xmlns:def="DEF" xmlns:abc="ABC"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
        <def:tagTwo>  
            <def:tagThree id="Identity1">  
                <def:Section domain="Domain123">10000</def:Section>  
            </def:tagThree>  
            <def:tagThree id="Identity2">  
                <def:Section domain="Domain123">20000</def:Section>  
            </def:tagThree>  
            <def:tagThree id="Identity3">  
                <def:Section domain="Domain123">30000</def:Section>  
            </def:tagThree>  
            <def:tagThree id="Identity4">  
                <def:Section domain="Domain123">40000</def:Section>  
            </def:tagThree>  
        </def:tagTwo>  
    </abc:tagOne>
    
    
    
    
    



    Query is like:

    select  XMLAGG(XML_MESSAGE)  
        from INT_PART_TABLE  
        where XMLExists('  
            declare namespace abc="ABC";  
            declare namespace def="DEF";  
            $Message/abc:tagOne/def:tagTwo/def:tagThree[@id="Identity4"][def:Section[@domain="Domain123"]  = ("50000", "40000") ]'  
            passing  
            xML_mESSAGE as "Message"  
        )
    
    
    
    
    


    We try to create indexes structured on the column of xmltype, as defined in the XML example file:

    CREATE INDEX INT_PART_TABLE_SXI
       ON INT_PART_TABLE (XML_MESSAGE)
       INDEXTYPE IS XDB.XMLINDEX
          PARAMETERS ('XMLTABLE INT_PART_content_table_01
                               XMLNAMESPACES (''ABC'' AS "abc",
                                              ''DEF'' AS "def"),  
                               ''/abc:tagOne/def:tagTwo''
                       COLUMNS
                         xmltagTwo      XMLTYPE  PATH ''/abc:tagOne/def:tagTwo''  VIRTUAL
                       XMLTABLE INT_PART_content_table_02
                         XMLNAMESPACES (''DEF'' AS "def"),
                         ''/def:tagTwo''
                                PASSING xmltagTwo
                                 COLUMNS 
                                 xmltagThree     XMLTYPE  PATH ''/def:tagThree''   VIRTUAL
                       XMLTABLE INT_PART_content_table_03
                          XMLNAMESPACES (''DEF'' AS "def"),    
                          ''/def:tagThree''
                             PASSING xmltagThree
                               COLUMNS 
                               section number PATH ''def:Section'',
                               domain varchar2(20) PATH ''@domain'',
                               id varchar2(20) PATH ''@id''
                  ')local;
    
    
    
    
    

    Table structure:

    CREATE TABLE INT_PART_TABLE
    (
       DB_ID            VARCHAR2 (10 BYTE),
       xML_mESSAGE      SYS.XMLTYPE,
       LOAD_TIMESTAMP   TIMESTAMP (6)
    )
    XMLTYPE xML_mESSAGE
       STORE AS BINARY XML
       (ENABLE STORAGE IN ROW
        CHUNK 16384
        RETENTION
        CACHE READS NOLOGGING)
       ALLOW NONSCHEMA
       DISALLOW ANYSCHEMA
    PCTUSED 0
    PCTFREE 10
    INITRANS 1
    MAXTRANS 255
    STORAGE (BUFFER_POOL DEFAULT)
    PARTITION BY RANGE (LOAD_TIMESTAMP)
       (PARTITION P_12092012 VALUES LESS THAN (TIMESTAMP ' 2012-09-12 00:00:00')
           LOGGING
           NOCOMPRESS
           PCTFREE 10
           INITRANS 1
           MAXTRANS 255
           STORAGE (INITIAL 512 K
                    NEXT 512 K
                    MINEXTENTS 1
                    MAXEXTENTS UNLIMITED
                    PCTINCREASE 0
                    BUFFER_POOL DEFAULT),
        PARTITION MAX VALUES LESS THAN (MAXVALUE)
           LOGGING
           NOCOMPRESS
           PCTFREE 10
           INITRANS 2
           MAXTRANS 255
           STORAGE (INITIAL 128 K
                    NEXT 128 K
                    MINEXTENTS 1
                    MAXEXTENTS UNLIMITED
                    PCTINCREASE 0
                    BUFFER_POOL DEFAULT))
    PARALLEL (DEGREE 8 INSTANCES 1);
    
    
    
    
    

    - But the query above does not use the XMLINDEX STRUCTURE and instead turns to FTS INT_PART_TABLE.  Please help here.

    Is it the wrong way I created structured Index.

    (I tried a few other ways where I got-> ORA-19279: XPTY0004 - dynamic XQuery type mismatch: expected - singleton sequence got several sequence element).

    S ' Please NOTE that I used two "VIRTUAL" during the creation of the Index as otherwise I was getting the error:
    ORA-29958: fatal error occurred in the execution of routine ODCIINDEXCREATE
    ORA-30984: the XMLType column must be declared as virtual

    Please suggest. Thank you.

    Finally some time to watch this...

    The following works for me:

    Connected to:

    Oracle Database 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production

    With partitioning, OLAP, Data Mining and Real Application Testing options

    SQL > create table (int_part_table)

    2 db_id varchar2 (10 byte)

    3, xml_message xmltype

    4, load_timestamp timestamp (6)

    5)

    store xml_message 6 xmltype to the binary xml format

    7 partition by range (load_timestamp)

    () 8

    9 lower values p_12092012 partition to (to_timestamp ('2012-09-12 00:00:00 ',' YYYY-MM-DD HH24:MI:SS'))))

    10, partition p_max values less than (maxvalue)

    11)

    12 parallel (degree 8 instances 1);

    Table created.

    SQL > create index int_part_table_sxi on int_part_table (xml_message)

    2 indextype is xdb.xmlindex

    3 rooms

    4 parameters (q'~)

    5 XMLTABLE int_part_content_table_01

    6 XMLNAMESPACES ('ABC' AS 'abc', 'DEF' AS 'def'),

    7 ' / abc: Tallet / def:tagTwo / def:tagThree'

    8 COLUMNS

    9 article binary_double PATH 'def:Section '.

    10, area varchar2 (20) PATH 'def:Section/@domain '.

    11, id varchar2 (20) PATH '@id '.

    12 ~');

    The index is created.

    SQL >

    SQL >

    SQL > insert into int_part_table values)

    2 '1'

    3, xmltype (')

    4

    ' NS:ABC = 'ABC' xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" > ".

    5

    6

    7              10000

    8

    9

    10 20000

    11

    12

    13 30000

    14

    15

    16 40000

    17

    18

    19 ')

    20, systimestamp

    (21);

    1 line of creation.

    SQL > commit;

    Validation complete.

    SQL > exec dbms_stats.gather_table_stats (user, 'INT_PART_TABLE');

    PL/SQL procedure successfully completed.

    SQL >

    SQL >

    SQL > set autotrace traceonly explain

    SQL > set lines 200

    SQL > define pages 100

    SQL >

    SQL > select / * + no_parallel * / xml_message

    2 of int_part_table

    3 where (XMLExists)

    4 ' declare namespace abc = "ABC"; (::)

    5 declare def namespace = "DEF"; (::)

    /ABC:tagOne/def:tagTwo/def:tagThree[@ID="Identity4 6 '.

    7 and def:Section/@domain="Domain123.

    8 and (def:Section = 40000

    9 or def:Section = 50000)]"

    10 passage xml_message

    11        ) ;

    Execution plan

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

    Hash value of plan: 3112612945

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

    | ID | Operation | Name                      | Lines | Bytes | Cost (% CPU). Time | Pstart. Pstop |

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

    |   0 | SELECT STATEMENT |                           |     1.   417.    15 (0) | 00:00:01 |       |       |

    |   1.  SEMI NESTED LOOPS.                           |     1.   417.    15 (0) | 00:00:01 |       |       |

    |   2.   RANGE OF PARTITION ALL THE |                           |     1.   367.    14 (0) | 00:00:01 |     1.     2.

    |   3.    TABLE ACCESS FULL | INT_PART_TABLE |     1.   367.    14 (0) | 00:00:01 |     1.     2.

    |   4.   ITERATOR SYSTEM PARTITION.                           |     1.    50.     1 (0) | 00:00:01 |   KEY |   KEY |

    |*  5 |    TABLE ACCESS BY LOCAL INDEX ROWID | INT_PART_CONTENT_TABLE_01 |     1.    50.     1 (0) | 00:00:01 |   KEY |   KEY |

    |*  6 |     INDEX RANGE SCAN | SYS78560_78563_RID_IDX |     1.       |     0 (0) | 00:00:01 |   KEY |   KEY |

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

    Information of predicates (identified by the operation identity card):

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

    5 - filter("SYS_SXI_0".") ID "="Identity4"AND ("SYS_SXI_0"". ")" SECTION "IS 4.0E + 004 D OR 'SYS_SXI_0'." SECTION "(= 5.0E + 004 D) AND"

    'SYS_SXI_0 '. ("DOMAIN"="Domain123")

    6 - access ("INT_PART_TABLE". ROWID = "SYS_SXI_0." ("' RID ')

    filter (TBL$ OR$ IDX$ PART$ NUM ("DEV".) "INT_PART_TABLE", 0,0,0, "INT_PART_TABLE". ROWID) TBL = $ OR$ IDX$ PART$ NUM ("DEV". "INT_PAR

    T_CONTENT_TABLE_01", 0,0,0,"SYS_SXI_0. " ROWID))

    A few things to know:

    -use BINARY_DOUBLE datatype to untyped (i.e. not based on a diagram) the numerical values of the XML index.

    -J' developed the sequence iterator predicate you were using for a Boolean expression GOLD. Otherwise, the index is not used as intended.

    You can also create a secondary index that satisfies the predicate #5 (see red part above):

    SQL > create index int_part_content_table_01_ix1

    2 on local int_part_content_table_01 (id, field, section);

    The index is created.

    SQL >

    SQL > select / * + no_parallel * / xml_message

    2 of int_part_table

    3 where (XMLExists)

    4 ' declare namespace abc = "ABC"; (::)

    5 declare def namespace = "DEF"; (::)

    /ABC:tagOne/def:tagTwo/def:tagThree[@ID="Identity4 6 '.

    7 and def:Section/@domain="Domain123.

    8 and (def:Section = 40000

    9 or def:Section = 50000)]"

    10 passage xml_message

    11        ) ;

    Execution plan

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

    Hash value of plan: 3704965392

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

    | ID | Operation | Name                          | Lines | Bytes | Cost (% CPU). Time | Pstart. Pstop |

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

    |   0 | SELECT STATEMENT |                               |     1.   417.     4 (25) | 00:00:01 |       |       |

    |   1.  NESTED LOOPS |                               |     1.   417.     4 (25) | 00:00:01 |       |       |

    |   2.   UNIQUE FATE |                               |     2.   100.     2 (0) | 00:00:01 |       |       |

    |   3.    SYSTEM PARTITION ALL |                               |     2.   100.     2 (0) | 00:00:01 |     1.     2.

    |   4.     TABLE ACCESS BY LOCAL INDEX ROWID | INT_PART_CONTENT_TABLE_01 |     2.   100.     2 (0) | 00:00:01 |     1.     2.

    |*  5 |      INDEX RANGE SCAN | INT_PART_CONTENT_TABLE_01_IX1 |     1.       |     1 (0) | 00:00:01 |     1.     2.

    |*  6 |   TABLE ACCESS BY ROWID USER | INT_PART_TABLE |     1.   367.     1 (0) | 00:00:01 | ROWID | ROWID |

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

    Information of predicates (identified by the operation identity card):

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

    5 - access("SYS_SXI_0".") ID '= 'Identity4' AND 'SYS_SXI_0'." DOMAIN "=" Domain123 ")

    filter ("SYS_SXI_0". "SECTION"IS 4.0E + 004 D OR 'SYS_SXI_0'." SECTION "(= 5.0E + 004 D)"

    6 filter (TBL$ OR$ IDX$ PART$ NUM ("DEV".) "INT_PART_TABLE", 0,0,0, "INT_PART_TABLE". ROWID) TBL = $ OR$ IDX$ PART$ NUM ("DEV". "INT_PART_CON

    TENT_TABLE_01", 0,0,0,"SYS_SXI_0. " ROWID))

  • 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 '.

  • Structure of the query with parameters

    Hello
    Consume the web service, the results in a file xml with complex structures.
    The function below the structure of the query
    < TemplateName CcResultItems = "CgrInfo_1" >
    My question is how to reorganize the query to obtain the results of the structure
    < TemplateName CcResultItems = "CgrOwners_4" >
    which should return three rows.

    Kind regards
    Kostadin

    create or replace
    FUNCTION WS_SELECT_XML RETURN VARCHAR2 AS
    XML_VAR XMLTYPE: = XMLTYPE)
    "" ' < soap envelope: xmlns:soap = 'http://www.w3.org/2003/05/soap-envelope"" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" container = "http://www.w3.org/2001/XMLSchema" >. "
    < soap: Header >
    "< XmlSoapHeader xmlns ="https://test.wstestx.com/XWS2/ "/>"
    < / soap: Header >
    < soap: Body >
    "< ProcessRequestResponse xmlns ="https://test.wstestx.com/XWS2/">."
    < ProcessRequestResult > <! [CDATA [< CcResponse >

    < TemplateName CcResultItems = "CgrInfo_1" >
    < CcResultItem > < InfoMessage > < / InfoMessage > < IsitTerminated > 0 < / IsitTerminated > < IdObject > 365124 < / IdObject > < sanctuary ObjectlName > < / ObjectlName > < ObjectTaxNumber > 305089321502 < / ObjectTaxNumber > < / CcResultItem >
    < / CcResultItems >
    < TemplateName CcResultItems = "CgrUnits_2" >
    < / CcResultItems >
    < TemplateName CcResultItems = "CgrActors_3" >
    < CcResultItem > < IdObject > 365124 < / IdObject > < UnitNo > 0 < / UnitNo > < EntityTYPEcode > 1 < / EntityTYPEcode > < EntityTYPEdesc > person < / EntityTYPEdesc > < / CcResultItem >
    < / CcResultItems >
    < TemplateName CcResultItems = "CgrOwners_4" >
    < CcResultItem > < IdObject > 365124 < / IdObject > < EntityTYPEcode > 1 < / EntityTYPEcode > < EntityTYPEdesc > person < / EntityTYPEdesc > < OwnerID > 610697843014 < / OwnerID > < OwnerName > ALEX < / OwnerName > < / CcResultItem >
    < CcResultItem > < IdObject > 365124 < / IdObject > < EntityTYPEcode > 1 < / EntityTYPEcode > < EntityTYPEdesc > person < / EntityTYPEdesc > < OwnerID > 840645947005 < / OwnerID > < OwnerName > JOHN < / OwnerName > < / CcResultItem >
    < CcResultItem > < IdObject > 365124 < / IdObject > < EntityTYPEcode > 2 < / EntityTYPEcode > < company EntityTYPEdesc > < / EntityTYPEdesc > < OwnerID > 703454 < / OwnerID > < OwnerName > BROWN < / OwnerName > < / CcResultItem >
    < / CcResultItems >
    < TemplateName CcResultItems = "CgrActivities_5" >
    < / CcResultItems >
    < TemplateName CcResultItems = "CgrMembership_6" >
    < / CcResultItems >
    < TemplateName CcResultItems = "CgrFounding_7" >
    < CcResultItem > < IdObject > 365124 < / IdObject > < FoundingDate > 2007-08-16 13:53 < / FoundingDate > < Total > 146701.00 < / Total > < / CcResultItem >
    < / CcResultItems >
    [[< / CcResponse >]] > < / ProcessRequestResult >
    < / ProcessRequestResponse >
    < / soap: Body >
    < / envelope soap: >
    ');
    BEGIN
    FOR R IN)
    WITH T AS (SELECT (XML_VAR) DOUBLE COLLAR)
    SELECT x2.*
    FROM XMLTable)
    XMLNamespaces)
                ' http://www.w3.org/2003/05/soap-envelope ' LIKE 'SOAP'
    , by default ' https://test.wstestx.com/XWS2/ '
    )
    , ': soap envelope / soap: Body/ProcessRequestResponse/ProcessRequestResult '
    by the way XML_VAR
    path of CcResponse clob columns '.'
    ) x 1
    XMLTABLE)
    ' / CcResponse/CcResultItems.
    XMLPARSE PASSAGE (DOCUMENT X 1.) CCRESPONSE)
    COLUMNS
    TemplateName VARCHAR2 (140) path "@TemplateName"
    , IDOBJECT VARCHAR2 (140) PATH "CcResultItem/IdObject.
    , PATH of VARCHAR2 (340) OBJECTLNAME ' CcResultItem/ObjectlName '.

    , PATH of VARCHAR2 (140) VRSKA 'CcResultItem '.
    ) X 2
    WHERE X 2. TemplateName = "CgrInfo_1."
    -WHERE X 2. TemplateName = "CgrActors_3."
    -WHERE X 2. TemplateName = "CgrOwners_4."
    ) LOOP
    DBMS_OUTPUT. Put_line (' IdObject: ' |) R.IDOBJECT |  ' ObjectlName: ' | R.ObjectlName | "TemplateName ' |" R.TemplateName);
    END LOOP;
    DBMS_OUTPUT. Put_line ("- end -");
    RETURNS A NULL VALUE.
    END WS_SELECT_XML;

    Based on your query, I'll assume that you started with

    Extract data from webservice response

    In my opinion, it comes of the change you are looking for

    FOR R IN (
       SELECT x2.TemplateName, x3.idobject, x3.OWNERID
          FROM XMLTable(
                 XMLNamespaces(
                   'http://www.w3.org/2003/05/soap-envelope' AS "soap"
                 , default 'https://test.wstestx.com/XWS2/'
                 )
               , 'soap:Envelope/soap:Body/ProcessRequestResponse/ProcessRequestResult'
                 passing XML_VAR
                 columns
                 CcResponse clob path '.'
               ) x1
          , XMLTABLE(
              '/CcResponse/CcResultItems[@TemplateName="CgrOwners_4"]'
              PASSING XMLPARSE(DOCUMENT X1.CCRESPONSE)
              COLUMNS
                      TemplateName  VARCHAR2(20) PATH '@TemplateName'
                    , ItemXML       XMLTYPE       PATH 'CcResultItem'
            ) X2
          , XMLTABLE(
              '/CcResultItem'
              PASSING x2.itemXML
              COLUMNS
                      IDOBJECT      VARCHAR2(20) PATH 'IdObject'
                    , OWNERID       VARCHAR2(20) PATH 'OwnerID'
            ) X3
    )
    

    As Odie post pointed out.  The first (x 1) XMLTable retrieves the content of ProcessRequestRequest and by doing this, delete the CDATA tag.  We now have a CLOB that resembles XML.  The second XMLTable (x 2) converts this CLOB into an XMLType and looking for the node that matches the XPath expression.  It's where I've hardcoded in your query to search for a specific node.  As you want node has a repeated structure that you want to retrieve each row, I spent structures repeatedly in the third XMLTable (x 3) so he could analyze.  You could combine x 2 and x 3 using XQuery, but I suggest starting by this method I found that it's easier to understand what is happening.

    To test out your code, simply replace the line

    by the way XML_VAR

    with

    from XMLTYPE ("... the content of the SOAP Message...")

    and run the query.  You can do this to debug the query as you and just do a SELECT * to see what all went from XMLTable to XMLTable, so went to check the correct data.

  • Generation of XML with an INTO clause

    I have a simple Xml DDE.

    example query
    select * into variable1, variable 2 from table_1;
    I want to generate xml like this... I don't know how to use XMLELEMENT when there is an into clause...
    <row>
    <vraiable1>xxx</vraiable1>
    <vraiable2>yyy</vraiable2>
    </row>
    Thank you

    It depends on what you want to do with the variable.

    Function XMLElement() returns an XMLType instance, so the target variable must be of type XMLType, for example:

    DECLARE
      v_xmlrow  XMLType;
    BEGIN
      select xmlelement("row"
             , xmlelement("var1", col1)
             , xmlelement("var2", col2)
             )
      into v_xmlrow
      from table_1
      where 
      ;
    END;
    /
    

    You can also return a serialized (text) representation of the XML document that is obtained as a CLOB or VARCHAR2, using methods. getClobVal() or. getStringVal() in 10 g and 11 g XMLSerialize() function.

  • How can improve on the slow update using the query / * + NO_XML_DML_REWRITE * /?

    We have an update query recently brought to my attention that turns very slowly on Oracle 11.2.0.1 against a secure XML binary files table using

    Update / * + NO_XML_DML_REWRITE * / set object_value = croutreach.action: 1 where actn_id =: 2.
    I am told the majority/close to the majority of the ~ 16 fields are updated. This table has also many predefined virtual columns with index fn based on them.

    My first inclination was to this redesign using updatexml Oracle. I was told, the / * + NO_XML_DML_REWRITE * / index would also be required here.

    Update / * + NO_XML_DML_REWRITE * /.
    < tble_name > a
    Set a.object_value = updatexml (a.object_value...).

    Last year our dba have been mandated by Oracle Support to use this trick, as the update has not been updated off any msgs of error records.

    + 1. Hoping to find out if anyone met with this indication in some capacity and what has their experience been? +

    Trying to optimizie this update statement, I'll start from scratch is not using the / * + NO_XML_DML_REWRITE * / hint and will take effect in using the updatexml with establishing a xmlindex.

    + 2. Hoping to receive suggestions on creating the good xmlindex - find an informal index. If getting a few good performance with the xmlindex; in an attempt to remove some of the use of the virtual column. +

    + 3. Any suggestions on living with virtual columns in conjunction with xmlindexes? See the definition of table action and Associates ivirtual columns and indexes. This picture seems more indexed... +.
    REATE
      TABLE "CROUTREACH"."ACTION" OF XMLTYPE
      (
        CONSTRAINT "ACTN_ID_PK" PRIMARY KEY ("ACTN_ID") USING INDEX PCTFREE 10
        INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT
        1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1
        FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE
        DEFAULT) TABLESPACE "ACME_DATA" ENABLE
      )
      XMLTYPE STORE AS SECUREFILE BINARY XML
      (
        TABLESPACE "ACME_DATA" ENABLE STORAGE IN ROW CHUNK 8192 CACHE READS LOGGING
        NOCOMPRESS KEEP_DUPLICATES STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1
        MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
        CELL_FLASH_CACHE DEFAULT)
      )
      ALLOW NONSCHEMA ALLOW ANYSCHEMA VIRTUAL COLUMNS
      (
        *"ACTION_DEF_URN"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                 
    /action/srvContextPointer/outreachActionDefInfo/@actionDefUrn                                               
    '
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50))),
        *"STAT_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
        SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                              
    /action/@status_dt'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
    WITH
      TIME ZONE))),
        *"ACT_DEF_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                              
    /action/srvContextPointer/outreachActionDefInfo/@actionDefId'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(20))),
        *"CORRL_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                              
    /action/correlationId'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50))),
        *"STAT_RSN"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                                  
    /action/statusReason'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(30))),
        *"ACT_APPNT_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
        SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                  
    /action/actionAppointment/appointment_dt'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
    WITH
      TIME ZONE))),
        *"UPDT_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
        SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                              
    /action/@update_dt'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
    WITH
      TIME ZONE))),
        *"CRET_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
        SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                              
    /action/@create_dt'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
    WITH
      TIME ZONE))),
        *"ACT_SEQ"* AS (CAST(TO_NUMBER(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                    
    /action/srvContextPointer/outreachActionDefInfo/@sequence'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2)) AS NUMBER(10))),
        *"SERVICE_DEF_URN"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";                                                          
    /action/srvContextPointer/serviceDefUrn'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(100))),
        *"ASSIGN_TEAM_CD"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                  
    /action/assignment/@teamCategoryCode'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50))),
        *"ASSIGN_STAFF_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                  
    /action/assignment/staffProfileId'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50))),
        *"ACTION_TYPE"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)                                                      
    declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance"; (::)                                                      
    local-name-from-QName(QName("http://www.cigna.com/acme/domains/actions/2010/03",/action/@xsi:type))                                                                  
    '
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50))),
        *"ACTN_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";/action/@id'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50))),
        *"STATUS"*AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";/action/@status'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(20))),
        *"ACME_MBR_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
        'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";/action/acmeMemberId'
        PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
        16777216,0),50,1,2) AS VARCHAR2(50)))
      )
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
      (
        INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
        FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
        CELL_FLASH_CACHE DEFAULT
      )
      TABLESPACE "ACME_DATA" ;
    CREATE UNIQUE INDEX *"CROUTREACH"."SYS_C0014547"* ON "CROUTREACH"."ACTION"
      (
        "SYS_NC_OID$"
      )
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
      (
        INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
        FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
        CELL_FLASH_CACHE DEFAULT
      )
      TABLESPACE "ACME_DATA" ;
    CREATE UNIQUE INDEX *"CROUTREACH"."SYS_IL0000082156C00003$$"* ON "CROUTREACH".
      "ACTION"
      (
        PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576
        MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST
        GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
        TABLESPACE "ACME_DATA" PARALLEL (DEGREE 0 INSTANCES 0) ;
    CREATE UNIQUE INDEX *"CROUTREACH"."ACTN_ID_PK"* ON "CROUTREACH"."ACTION" (
      "ACTN_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(
      INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
      FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
      CELL_FLASH_CACHE DEFAULT) TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACTION_STAT_RSN_IDX"* ON "CROUTREACH"."ACTION"
        (
          "STAT_RSN"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACTION_UPDT_DT_IDX"* ON "CROUTREACH"."ACTION"
        (
          "UPDT_DT"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACTION_CRET_DT_IDX"* ON "CROUTREACH"."ACTION"
        (
          "CRET_DT"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACTION_STAT_DT_IDX"* ON "CROUTREACH"."ACTION"
        (
          "STAT_DT"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACTION_MBRID_TYP_STAT_IDX"* ON "CROUTREACH"."ACTION"
        (
          "ACME_MBR_ID",
          "ACTION_TYPE",
          "STATUS"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACT_ACTDEF_URN_IDX"* ON "CROUTREACH"."ACTION"
        (
          "ACTION_DEF_URN"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
      CREATE
        INDEX *"CROUTREACH"."ACTION_ACT_DEF_ID_STATUS_IDX"* ON "CROUTREACH"."ACTION"
        (
          "ACT_DEF_ID",
          "STATUS"
        )
        PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
        (
          INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
          0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
          CELL_FLASH_CACHE DEFAULT
        )
        TABLESPACE "ACME_DATA" ;
    Any suggestions much appreciated.

    Kind regards
    Richard Blanchard

    Hi Rick,

    Thanks for adding the sample.

    First note: you use namespaces by default, different in the example of XML and the request - this a misspelling due to your mask real names?

    In any case, I see two problems with the UPDATE statement:

    (1) unless it is really part of the id, do not double-cover the value:

    @id="'888a80be-d69f-464d-b3f7-85b6209f918e'"
    

    must be:

    @id="888a80be-d69f-464d-b3f7-85b6209f918e"
    

    or as a variable binding (see below)

    (2) just like other XML features, XMLExists supports the names. You must declare any namespace as you lower to use XQuery in the expression (in this case, the default namespace).

    It works for me:

    SQL> create table action of xmltype
      2  xmltype store as securefile binary xml
      3  ;
    
    Table created.
    
    SQL> insert into action
      2  values (
      3   xmltype('
      4  
     13     abcdefghijklmnop
     14     qrstuvwxyz
     15     
     16        urn:coderunner:Medical:Definition:ServiceService:11111:7
     17        
     18           Access Profile~Why did you access the profile?~Reason for access?
     19        
     20     
     21  ')
     22  );
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> UPDATE action
      2  SET object_value =
      3      updatexml( object_value
      4               , '/action/@status'
      5               , 'triggered'
      6               , 'xmlns="http://www.xxxxxx.ddd/mmm/domains/actions/2010/03"' )
      7  WHERE XMLExists( 'declare default element namespace "http://www.xxxxxx.ddd/mmm/domains/actions/2010/03"; (::)
      8                   /action[@id=$action_id]'
      9                   passing object_value
     10                         , 'dfdfdfdfdfddfdfdfdfdfdf' as "action_id"
     11                   )
     12  ;
    
    1 row updated.
    
    SQL> SELECT XMLCast(
      2           XMLQuery('declare default element namespace "http://www.xxxxxx.ddd/mmm/domains/actions/2010/03"; (::)
      3                     /action/@status'
      4                     passing object_value returning content)
      5           as varchar2(30)
      6         ) as status
      7  FROM action
      8  ;
    
    STATUS
    ------------------------------
    triggered
    
  • Attributes XML makes my query returns no rows

    Hi all

    I have a strange problem.

    I ask an XML, but the attributes in one of the tags my query will return no rows. If I delete the attributes, the query works as expected.

    The XML code is below; This is the Report tag attributes that cause problems:
    <result errorCode="0">
         <return>
              <Report
                   xsi:schemaLocation="Items_x0020_status_x0020_information http://******-****/ReportServer?%2FReports%2FContent%20Producer%20Reports%2FItems%20status%20information&amp;rs%3AFormat=xml&amp;rc%3ASchema=True"
                   Name="Items status information" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns="Items_x0020_status_x0020_information">
                   <Tablix1>
                        <Details_Collection>
                             <Details ItemId="914P7" Username="test" user_role="IT"
                                  first_name="Barry" last_name="Donovan" organisation=""
                                  content_format="On_Screen" modified_date="26/05/2011 13:16:49"
                                  item_status="Draft" status_date="" component_name="" demand="" />
                        </Details_Collection>
                   </Tablix1>
              </Report>
         </return>
    </result>
    My query is:
         select
                a.item_id
               ,a.username
               ,a.user_role
               ,a.first_name
               ,a.last_name
               ,a.supplier_id
               ,a.format
               ,a.modified_date
               ,a.item_status
               ,a.completion_date
               ,a.component_code
    
             from   dual
                   ,xmltable
                    ('/result/return/Report/Tablix1/Details_Collection/Details'
                       passing p_xml
                       columns
                          item_id         varchar2(1000) path '@ItemId'
                         ,username        varchar2(1000) path '@Username'
                         ,user_role       varchar2(1000) path '@user_role'
                         ,first_name      varchar2(1000) path '@first_name'
                         ,last_name       varchar2(1000) path '@last_name'
                         ,supplier_id     varchar2(1000) path '@organisation'
                         ,format          varchar2(1000) path '@content_format'
                         ,modified_date   varchar2(1000) path '@modified_date'
                         ,item_status     varchar2(1000) path '@item_status'
                         ,completion_date varchar2(1000) path '@status_date'
                         ,component_code  varchar2(1000) path '@demand'
                    ) a;
    I tried to strip the attributes to the tag, which works, but some XML I look back are large enough (number of records), so that cause problems in itself. I would rather deal with it and don't mess with the XML itself if possible.

    Any help would be much appreciated!

    Thank you much in advance.

    Robin

    Published by: User_resU on April 12, 2012 14:50

    The element of report and its children belong to a default namespace.
    You have stated that in the request too:

    xmltable
    (
    xmlnamespaces('Items_x0020_status_x0020_information' as "ns0"),
    '/result/return/ns0:Report/ns0:Tablix1/ns0:Details_Collection/ns0:Details'
       passing
    
  • XML from the master-child tables

    Hello

    Just post here again for a quick response.

    XML from the master-child tables


    Best regards
    Hari

    Hello

    Using SQL/XML functions is the way to go in this case.

    SQL> select xmlroot(
      2           xmlelement("ROWSET",
      3             xmlagg(
      4               xmlelement("MASTER",
      5                 xmlforest(tm.master_id, tm.master_name, tm.master_location),
      6                   (
      7                    select xmlagg(
      8                             xmlelement("CHILD",
      9                               xmlforest(tc.child_id, tc.child_name, tc.child_location)
     10                             ) order by tc.child_id
     11                           )
     12                    from t_child tc
     13                    where tc.master_id = tm.master_id
     14                   )
     15               ) order by tm.master_id
     16             )
     17           )
     18         , version '1.0')
     19  from t_master tm
     20  where tm.master_id = 1
     21  ;
    
    XMLROOT(XMLELEMENT("ROWSET",XM
    --------------------------------------------------------------------------------
    
    
      
        1
        master name
        master location
        
          1
          child name 1
          child location 1
        
        
          2
          child name 2
          child location 2
        
        
          3
          child name 3
          child location 3
        
      
    
     
    

    Note that the first XMLAgg is optional here, since you want just a MASTER at a time.
    But if you need an XML document containing several masters, he will work as well.

    Alternatively, you can write a similar query with a GROUP BY clause (no correlated subquery, but a join between the master and the child instead):

    select xmlroot(
             xmlelement("ROWSET",
               xmlagg(
                 xmlelement("MASTER",
                   xmlforest(tm.master_id, tm.master_name, tm.master_location),
                     xmlagg(
                       xmlelement("CHILD",
                         xmlforest(tc.child_id, tc.child_name, tc.child_location)
                       ) order by tc.child_id
                     )
                 ) order by tm.master_id
               )
             )
           , version '1.0'
           )
    from t_master tm
         join t_child tc on tc.master_id = tm.master_id
    where tm.master_id = 1
    group by tm.master_id, tm.master_name, tm.master_location
    ;
    

    Published by: odie_63 on June 15, 2011 15:06

  • XML from the Oracle Table data

    Hi all

    I'm new to this network. I'm also new to oracle XML package. I want a help with the query below.

    CREATE TABLE EMP (ID NUMBER PRIMARY KEY, NAME VARCHAR2 (10), TELEPHONE NUMBER);

    INSERT INTO EMP (ID, NAME, PHONE) VALUES (11, 'Joy', 1234);
    INSERT INTO EMP (ID, NAME, PHONE) VALUES (22, 'Mike', 5678).
    INSERT INTO EMP (ID, NAME, PHONE) VALUES (33, "Jason", NULL);
    COMMIT;

    I want to export data from the EMP table in an XML file with the format below.

    Power required:

    <? XML version = "1.0" encoding = "UTF-8"? > < Joy STATICDATA > < EMP > < ID > 11 < /ID > < NAME > < / NAME > < / EMP > < / STATICDATA >
    <? XML version = "1.0" encoding = "UTF-8"? > < Mike STATICDATA > < EMP > < ID > 22 < /ID > < NAME > < / NAME > < / EMP > < / STATICDATA >
    <? XML version = "1.0" encoding = "UTF-8"? > < Jason STATICDATA > < EMP > < ID > 33 < /ID > < NAME > < / NAME > < / EMP > < / STATICDATA >

    I used some XML functions and you wrote the following query.

    Select XMLROOT (XMLELEMENT (staticdata, XMLELEMENT (EMP, XMLELEMENT(ID,ID), XMLELEMENT(NAME,NAME))), version "1.0" encoding = "UTF - 8') xml EMP;

    my query output:

    <? XML version = "1.0" encoding = "UTF-8"? >
    < STATICDATA >
    < EMP >
    < ID > 11 / < ID >
    Joy of < NAME > < / NAME >
    < / EMP >
    < / STATICDATA >
    <? XML version = "1.0" encoding = "UTF-8"? >
    < STATICDATA >
    < EMP >
    < ID > 22 / < ID >
    < NAME > Mike < / NAME >
    < / EMP >
    < / STATICDATA >
    <? XML version = "1.0" encoding = "UTF-8"? >
    < STATICDATA >
    < EMP >
    < ID > 33 / < ID >
    Jason < NAME > < / NAME >
    < / EMP >
    < / STATICDATA >


    But I want the out as the power required above. all records in a single line. can someone help me achieve the desired output. also can I export all columns of the table with something like select * from the table in the XML file?

    Thank you
    Delobelle

    Don't know why you need it on a single line, but you could:

    Select XMLTYPE (REGEXP_REPLACE (XMLROOT (XMLELEMENT (staticdata, XMLELEMENT (EMP, XMLELEMENT(ID,ID), XMLELEMENT(NAME,NAME))), version "1.0" encoding = "UTF - 8'), CHR (10) |)) ' *<><'))>
    FROM EMP;

    SY.

Maybe you are looking for

  • My second Apple Watch I have couple as new or a back

    the right way to set up my second Apple Watch, nine or a back What's up? I use two of them. a Apple Watch is the first generation, and the second is 2nd generation.

  • MORE HEATING

    I have good A portable 9 December 2011 after the issuance of a year, over heating problem. I complain for Service. but it's all rady number, I have a lot of time complaining. All complaint (case id) are. [Personal information] Identity case everythin

  • Import faxes sent and received

    I can not access old faxes sent and received by using fax for Windows 7 and the scanning application. Win XP had an import feature in Fax Console, but this doesn't seem to be present in Win7.  I have correctly sent and received new faxes under Win 7

  • I have some days left in Illustrator in the first instance and I just downloaded today.

    I have some days left in Illustrator in the first instance and I just downloaded today. It was my sisters laptop (now it's mine) and she had her own creative cloud before here. It download the illustrator of the trial at the time (with its own Adobe

  • Captivate 9 - TTS Audio does not play on some slides when published but times normally in Captivate.

    Export to SWF and display in Win7/Chrome.Seems to be a problem mainly when I have slides with tts audio beyond 15-20 seconds or so...I've seen similar assignments to it but especially for Captivate 6.