Ora-22950 when comparing XML

Hi,
I want to compare two tables for differences using MINUS, but this does an implicit ORDER BY. So I get the error:
ORA-22950: cannot ORDER objects without MAP or ORDER method
Does anyone know how to get round this ? Convering to CLOB (col1.getclobval()) also doesn't work:
CREATE TABLE dunc1 (col1 XMLTYPE);
CREATE TABLE dunc2 (col1 XMLTYPE);
SELECT col1 FROM dunc1
MINUS
SELECT col1 FROM dunc2;
TIA, Duncan

Hi
I get the same error (ORA-22950: cannot ORDER objects without MAP or ORDER method) when I try to fetch values from individual nodes in xmltype column from 2 tables with a union.
select tbl1.xmlcol.extract('//abc/ns1:def','xmlns:ns1="http://xy.z.org/"').getStringVal() col1,
tbl1.xmlcol.extract('//abc/ns1:ghi/text()','xmlns:ns1="http://abc.def.org/"') as col2
from table1 tbl1
union
select tbl2.xmlcol.extract('//xyz/ns1:def','xmlns:ns1="http://xy.z.org/"').getStringVal() col1,
tbl2.xmlcol.extract('//xyz/ns1:ghi/text()','xmlns:ns1="http://abc.def.org/"') as col2
from table2 tbl2;
What am I doing wrong here?
Thx!

Similar Messages

  • ORA-22950 when selecting geometry and using union

    Any query where results are UNIONed where an sdo_geometry is in the selection list (such as the one below) gives me "ORA-22950 cannot ORDER objects without MAP or ORDER method".
    select p.point_id id, p.geom from point p
    union
    select l.line_id id, l.geom from line l
    Perhaps it's possible to define a map or order method for sdo_geometry (or perhaps not), but I don't want to order by geometry.
    I'm running this within SQL Plus (either 8.1.5.0.0 or 8.1.6.0.0 will do it)
    and am connecting to
    "Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.6.0.0 - Production"
    I tried adding an order by clause to order by id, to no effect.
    Any ideas?

    Hi Ben,
    The use of the union operator tells Oracle only to return a unique set of rows, hence a sort is done (in this case attempted, since there is no geometry sorting routine).
    If you choose union all, then no sort will be attempted.
    Hope this helps,
    dan

  • Receiving OCI/ORA-27163 when querying XML data in 11g.

    When querying a table with a column stored in XML format, we get this error for large XML values. This works in Oracle 10g but this error happens when the same data is queried in an 11.2.0.3 instance. I have had a support request open with Oracle for about a month and so far it has not made any progress. What we've seen are the following:
    1. The xml data itself is good.
    2. The good xml data when queried with a wholly 10g client/server environment, works.
    3. The same good xml data when inserted into a table in an 11g instance through a stored package run from the 11g instance (server to server) gets the 27163 error.
    4. The same xml data when queried in a 10g instance from an 11g client fails with the 27163 error.
    5. If we disable the 11g XML parser by setting an internal event (alter session set events='31156 trace name context forever, level 0x400';), then run the same code that was run in item 3 above, it does not get the 27163 error. However, the xml loaded to the 11g instance can then only be queried without getting the 27163 error if we use an older 10g client. An 11g client consistently gets the error.
    The server versions are 11.2.0.3 (upgraded from 10.2.0.4). The SQL*Net client versions that we have tested on are 11.2.0.2 and 11.2.0.3 (both produce the 27163 error).
    With considerable trial and error, we found that it is some combination of the file size and format that causes the error. Copied below is the smallest sample data of a failing XML that will produce this erro (about 8K). Remove any single character even in an a comment and the file parses successfully – but it’s not the file size alone as the original 800+KB file where we first dicovered this problem will process if the period in the attribute: @value=”${item.id}” is removed.
    We are at our wit's end, and with an 11g migration project looming, any ideas anyone can suggest would be very helpful.
    Thanks,
    Joe
    Here is a test case to play around with. Sorry I don't have a way to upload a zip file for this, but you can cut & paste from the post:
    1. CREATE TABLE my_xml_test
    (record_id NUMBER(4,0),
    xml SYS.XMLTYPE,
    comments VARCHAR2(200))
    ALTER TABLE my_xml_test
    ADD CONSTRAINT my_xml_test_pk PRIMARY KEY (record_id)
    USING INDEX
    2. mkdir SampleData
    3. cd into SampleData, copy the XML I will post in the first reply to this message into a new text document called xml_items_removed.xml.
    4. cd .. and create a file called 20120112_11g_bad_xml_issue.txt with this in it:
    1, .\SampleData\xml_items_removed.xml,"Fails: OriginalXML w/ all instances of <Item> removed (count 600) -- reduces file size to ca. 55KB but still fails (Saved by XMLSpy)"
    5. Next create your SQL*Loader control file (call it my_xml_test.ctl):
    LOAD DATA
    APPEND INTO TABLE my_xml_test
    FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS
    record_id,
    ext_fname FILLER CHAR(200),
    xml LOBFILE(ext_fname) TERMINATED BY EOF,
    comments
    6. sqlldr <username>/<password>@<database> control=my_xml_test.ctl data=20120112_11g_bad_xml_issue.txt log=20120112_11g_bad_xml_issue.log bad=20120112_11g_bad_xml_issue.bad
    7. Once the data is loaded, query my_xml_test table that you created in step 1. You should get the 27163 error:
    SELECT a.record_id,
    comments,
    a.XML,
    length(a.XML.GetClobVal()) clob_length
    FROM my_xml_test a

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSpy v2012 sp1 (http://www.altova.com) by Martin l (National Board of Medical Examiners) -->
    <IRData application="Item Review" version="1.3" itempool="2006001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <ViewerTypes>
              <Viewer id="its-viewer">
                   <Title>Item Text</Title>
                   <Description>Item Text</Description>
                   <BaseUrl>https://www.starttest.com/flex/4.3.0.0/InstitutionViewItem.aspx</BaseUrl>
                   <Parameters>
                        <Parameter name="pid" value="MSST"/>
                        <Parameter name="iid" value="01123"/>
                        <Parameter name="username" value="SomeUser"/>
                        <Parameter name="item" value="${item.id}"/>
                        <Parameter name="code" value="${CODE}"/>
                   </Parameters>
              </Viewer>
         </ViewerTypes>
         <Filters>
              <Filter id="drop-single-filter">
                   <AttributeSource>drop</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="onoff-single-filter">
                   <AttributeSource>onoff</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="reviewed-single-filter">
                   <AttributeSource>reviewed</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="build-multi-filter">
                   <AttributeSource>build</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="flag-multi-filter">
                   <AttributeSource>flag</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="u1dt-multi-filter">
                   <AttributeSource>U1DT</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="fb2-multi-filter">
                   <AttributeSource>FB2</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="fb1t-multi-filter">
                   <AttributeSource>FB1T</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="scorecat-multi-filter">
                   <AttributeSource>scorecat</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="images-multi-filter">
                   <AttributeSource>PIXN</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
              <Filter id="vignettes-multi-filter">
                   <AttributeSource>VIG1</AttributeSource>
                   <ControlType>select-1-drop-down-plus-all</ControlType>
              </Filter>
         </Filters>
         <DataPanels>
              <Control displayed="true">
                   <Filters>
                        <Filter>
                             <Description>Drop</Description>
                             <FilterSource>drop-single-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Version</Description>
                             <FilterSource>build-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>On/Off Test</Description>
                             <FilterSource>onoff-single-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Review status</Description>
                             <FilterSource>reviewed-single-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Flag</Description>
                             <FilterSource>flag-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Discipline</Description>
                             <FilterSource>fb1t-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Organ System</Description>
                             <FilterSource>u1dt-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Step 1 outline</Description>
                             <FilterSource>fb2-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Images</Description>
                             <FilterSource>images-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Vignettes</Description>
                             <FilterSource>vignettes-multi-filter</FilterSource>
                        </Filter>
                        <Filter>
                             <Description>Score categories</Description>
                             <FilterSource>scorecat-multi-filter</FilterSource>
                        </Filter>
                   </Filters>
              </Control>
              <ItemList displayed="true">
                   <Attributes>
                        <Attribute displayed="true">
                             <Description>Item</Description>
                             <AttributeSource>itemref</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>On test</Description>
                             <AttributeSource>onoff</AttributeSource>
                             <ControlType>checkbox-select</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Drop</Description>
                             <AttributeSource>drop</AttributeSource>
                             <ControlType>checkbox-select</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Reviewed</Description>
                             <AttributeSource>reviewed</AttributeSource>
                             <ControlType>check-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Flag</Description>
                             <AttributeSource>flag</AttributeSource>
                             <ControlType>select-1-drop-down</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Description</Description>
                             <AttributeSource>DESCR</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Discipline</Description>
                             <AttributeSource>FB1T</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Organ System</Description>
                             <AttributeSource>U1DT</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Step 1 outline</Description>
                             <AttributeSource>FB2</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <!-- Attribute displayed="false">                         <Description>Organ System plus</Description>                         <AttributeSource>ORGA</AttributeSource>                         <ControlType>text-display</ControlType>                    </Attribute -->
                        <Attribute displayed="true">
                             <Description>Images</Description>
                             <AttributeSource>PIXN</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Vignettes</Description>
                             <AttributeSource>VIG1</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Diff</Description>
                             <AttributeSource>pvalue</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Discr</Description>
                             <AttributeSource>rbvalue</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Answer Key</Description>
                             <AttributeSource>key</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                        <Attribute displayed="true">
                             <Description>Notes</Description>
                             <AttributeSource>notes</AttributeSource>
                             <ControlType>text-display</ControlType>
                        </Attribute>
                   </Attributes>
              </ItemList>
              <CurrentItemInfo>
                   <ItemText displayed="true"/>
                   <ItemData>
                        <Attribute>
                             <DataSource>scorecat</DataSource>
                             <ControlType>select-each-value</ControlType>
                        </Attribute>
                   </ItemData>
              </CurrentItemInfo>
         </DataPanels>
    </IRData>
    <?BASELINE FB2-A.02.01 on:4 off:3?>
    <?BASELINE FB2-A.02.02 on:4 off:4?>
    <?BASELINE FB2-A.03.01 on:3 off:1?>
    <?BASELINE FB2-A.03.02 on:0 off:1?>
    <?BASELINE FB2-A.03.04 on:3 off:2?>
    <?BASELINE FB2-A.03.05 on:1 off:0?>
    <?BASELINE FB2-A.03.07 on:4 off:2?>
    <?BASELINE FB2-A.04.01 on:2 off:5?>
    <?BASELINE FB2-A.04.02 on:5 off:3?>
    <?BASELINE FB2-A.04.03 on:3 off:1?>
    <?BASELINE FB2-A.04.04 on:1 off:1?>
    <?BASELINE FB2-A.05.01 on:12 off:14?>
    <?BASELINE FB2-A.05.02 on:9 off:1?>
    <?BASELINE FB2-A.05.03 on:0 off:6?>
    <?BASELINE FB2-A.06.01 on:7 off:9?>
    <?BASELINE FB2-A.06.02 on:2 off:6?>
    <?BASELINE FB2-A.06.03 on:10 off:5?>
    <?BASELINE FB2-A.06.04 on:1 off:1?>
    <?BASELINE FB2-A.07 on:23 off:20?>

  • ORA-00939 when creating XML table with Virtual Columns

    Getting error on creating table with VIRTUAL COLUMNS:
    Error at Command Line:4 Column:31
    Error report:
    SQL Error: ORA-00939: too many arguments for function
    00939. 00000 - "too many arguments for function"
    Without VIRTUAL COLUMNS works fine.
    Where to start?
    Is it possible to add Virtual Columns after a table is created?
    CREATE TABLE TDS_XML OF XMLType
    XMLSCHEMA "http://xmlns.abc.com/tds/TDSSchemaGen2.xsd"
    ELEMENT "TDSTestData"
      VIRTUAL COLUMNS
      TESTID AS (
        XMLCast(
                  XMLQuery('declare default element namespace "http://xmlns.abc.com/tds/TDSSchemaGen2.xsd"; /TDSTestData/TestID' PASSING OBJECT_VALUE RETURNING CONTENT)  AS VARCHAR2(32)
       )SQL*Plus: Release 11.2.0.2.0 Production on Mon Apr 30 20:17:29 2012
    Copyright (c) 1982, 2010, Oracle. All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> select * from v$version;
    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>

    victor_shostak wrote:
    Figured, Virtual Columns work only for Binary XML.They are only supported, currently, for Binary XML.

  • ORA-31020 when using XML with external DTD or entities

    I'd like to parse XML documents against a modular DTD that references other DTDs. This works fine with Oracle 9i. But after upgrading to 11g, the parsing of XML-instances fails and DBMS_XMLPARSER.parseClob produces ORA-31020.
    The same error occurs even if I simply try to store XML with a reference to an external DTD as xmltype:
    SQL> select xmltype('<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE ewl-artikel SYSTEM "http://www.foo.com/example.dtd"><test>123</test>') from dual;
    ERROR:
    ORA-31020: Der Vorgang ist nicht zulässig, Ursache: For security reasons, ftp
    and http access over XDB repository is not allowed on server side
    ORA-06512: in "SYS.XMLTYPE", Zeile 310
    ORA-06512: in Zeile 1
    How can I use external DTDs on remote servers in order to parse XML in an 11g database??? Any ideas for a workaround? Thanks in advance!

    This is my PL/SQL validation procedure:
    procedure validatexml (v_id in number default 0) is
    PARSER DBMS_XMLPARSER.parser;
    DTD_SOURCE clob;
    DTD_DOCUMENT xmldom.DOMDocumentType;
    XML_INSTANCE xmltype;
    BEGIN
    -- load DTD from XDB repository
    SELECT httpuritype('http://example.foo.de/app1/DTD1.dtd').getclob() into DTD_SOURCE from dual;
    -- load XML instance
    select co_xml into XML_INSTANCE from tb_xmltab where co_id=v_id;
    -- parse XML instance
    PARSER := DBMS_XMLPARSER.newParser;
    xmlparser.setValidationMode( PARSER , false);
    xmlparser.parseDTDClob( PARSER , DTD_SOURCE , 'myfirstnode' );
    DTD_DOCUMENT := xmlparser.getDoctype( PARSER );
    xmlparser.setValidationMode( PARSER , true );
    xmlparser.setDoctype( PARSER , DTD_DOCUMENT );
    DBMS_XMLPARSER.parseClob( PARSER , v_xml );
    DBMS_XMLPARSER.freeParser(PARSER);
    htp.print('<P>XML instance succesfully validated!<P>');
    end validatexml;

  • ORA-19007 when coping a table with an xml type in it to a new schema in the

    ORA-19007 when coping a table with an xml type in it to a new schema in the same database.
    Hi all,
    When I copy a table with an xml type in it to a new schema in the same database I get an ora-19009.
    The setup is as follows I have a schema a with table TABLE_WITH_XMLTYPE where data is:
    CREATE
    TABLE TABLE_WITH_XMLTYPE
    FOLDER_ID NUMBER (10, 0) NOT NULL,
    SEARCH_PROPERTIES XMLTYPE ,
    CONSTRAINT TABLE_WITH_XMLTYPE PK PRIMARY KEY (FOLDERID) USING INDEX
    XMLTYPE COLUMN SEARCH_PROPERTIES XMLSCHEMA
    "http://xxxxxxx.net/FolderProperties.xsd" element "FolderProperties"
    VARRAY SEARCH_PROPERTIES."XMLDATA"."PROPERTIES"."PROPERTY" STORE AS TABLE
    PROPERTY_TABLE
    (PRIMARY KEY (NESTED_TABLE_ID, ARRAY_INDEX)) ORGANIZATION INDEX OVERFLOW
    Both schemas have the following xml schema registered as a local xml schema
    BEGIN
    DBMS_XMLSCHEMA.registerSchema(
    SCHEMAURL => 'http://xxxxxxx.net/FolderProperties.xsd',
    SCHEMADOC =>
    '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xdb="http://xmlns.oracle.com/xdb"
    xdb:storeVarrayAsTable="true">
    <xs:element name="FolderProperties"
    type="FolderPropertiesType"
    xdb:defaultTable="FOLDER_SEARCH_PROPERTIES" />
    <xs:complexType name="FolderPropertiesType" xdb:SQLType="FOLDERPROPERTIES_T">
    <xs:sequence>
    <xs:element name="FolderID" type="FolderIDType" minOccurs="1" xdb:SQLName="FOLDER_ID"/>
    <xs:element name="Properties" type="PropertiesType" xdb:SQLName="PROPERTIES"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PropertiesType" xdb:SQLType="PROPERTIES_T">
    <xs:sequence>
    <xs:element name="Property" type="PropertyType" maxOccurs="unbounded"
    xdb:SQLName="PROPERTY" xdb:SQLCollType="PROPERTY_V"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PropertyType" xdb:SQLType="PROPERTY_T">
    <xs:sequence>
    <xs:element name="DateValue" type="DateType" xdb:SQLName="DATE_VALUE"/>
    <xs:element name="NumValue" type="NumType" xdb:SQLName="NUM_VALUE"/>
    <xs:element name="StringValue" type="StringType" xdb:SQLName="STRING_VALUE"/>
    </xs:sequence>
    <xs:attribute name="Name" xdb:SQLName="NAME" xdb:SQLType="VARCHAR2">
    <xs:simpleType>
    <xs:restriction base="xs:string">
    <xs:minLength value="1"/>
    <xs:maxLength value="255"/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
    <xs:simpleType name="FolderIDType">
    <xs:restriction base="xs:integer"/>
    </xs:simpleType>
    <xs:simpleType name="DateType">
    <xs:restriction base="xs:dateTime"/>
    </xs:simpleType>
    <xs:simpleType name="NumType">
    <xs:restriction base="xs:decimal"/>
    </xs:simpleType>
    <xs:simpleType name="StringType">
    <xs:restriction base="xs:string" />
    </xs:simpleType>
    </xs:schema>',
    LOCAL => TRUE,
    GENTYPES => TRUE,
    GENTABLES => FALSE);
    END;
    when I try to do the following insert:
    insert into schemaB.TABLE_WITH_XMLTYPE ( FOLDER_ID, SEARCH_PROPERTIES)
    select FOLDER_ID, SEARCH_PROPERTIES from schemaB.TABLE_WITH_XMLTYPE;
    I’ll get an ora-19007.
    Can some one point me in the right direction how to solve this error.
    Thanks Roelof.

    Who did you create the second table, in other words, how did you COPY the table as you said...
    If you created the second table via a CTAS (create table as select) then you will have created a table that is not the same as the original one. AFAIK I have once created an enhancement request for this after discovering that JDeveloper, for example, creates a "copy" via a CTAS which creates the wrong structure. Double check via package DBMS_METADATA.
    SQL> set long 1000000
    SQL> select DBMS_METADATA('TABLE','TABLE_WITH_XMLTYPE','SchemaA') from dual;
    SQL> select DBMS_METADATA('TABLE','TABLE_WITH_XMLTYPE','SchemaB') from dual;If you have got two different tables, than Mark's solution should help.
    M.
    Edited by: Marco Gralike on Feb 15, 2009 11:16 AM

  • ODI-1228: ORA-22950: cannot ORDER objects without MAP or ORDER method

    Simple interface between two schemas in the same oracle database (10g)
    I am trying to copy one table and do one simple lookup (in a table located in 3rd schema on the same database)
    Integration task fails on
    ODI-1228: Task messagexml_document (Integration) fails on the target ORACLE connection S2_P1.
    Caused By: java.sql.SQLException: ORA-22950: cannot ORDER objects without MAP or ORDER method
    Can anybody tell me, what I am doing wrong? Code that generate this error is just a simple INSERT with SELECT and sub SELECT with JOIN?
    I just can't find anything about this error.
    I'm stuck :-(

    I discovered that one of my fields is an XMLType field and is a part of comparison ODI do when it tries to do incremental update. The error message here is just a message from db that it can't compare XMLType fields to each other.
    Is there any way to learn ODI to not to compare by XMLType field?

  • Poblem with union/union all giving ORA-22950

    I am using a select statement with xmlelement to create an xml file.
    It has bout 5 different unions in it but I only ever bring one row through.
    I do it like this as then i can use this as one cursor in my plsql without having to create lots of cursors when i only need to use one.
    ie.
    SELECT  xmlelement("QUOTATION",xmlagg(xmlelement(Quotation,
                          xmlelement(CUSTOMERNAME, customername),
                          xmlelement(QUOTE,quoteid )))xmlfile
    From cust, quote
    where custid=quotecustid
    and ptype = 'Q'
    UNION
    SELECT  xmlelement("SALES",xmlagg(xmlelement(SALES,
                          xmlelement(CUSTOMERNAME, customername),
                          xmlelement(QUOTE,salesid )))xmlfile
    From cust, sales
    where custid=salescustid
    and ptype = 'S'Then I use a cursor to run it to a ftp file the one record i have selected by passing in ptype as a parameter.
    if i use union i get ORA-22950 - i have seen other people say use UNION all to get round this.
    if i use union all i will get a value for SALES of no rows i.e.
    Any ideas how i can get round this as dont want to keep creating cursors

    Using different cursors is still the best approach IMO.
    All things considered, it should be more efficient than using only an appearing "smarter" one.
    And it doesn't need to be explicit cursors, it could just be SELECT INTOs wrapped in a PL/SQL CASE statement, with the proper exception handler (if necessary).
    Anyway, if you want to stick with the single-cursor method, there are different ways to do it :
    1) Adding a selector column :
    SELECT xmlfile
    FROM (
      SELECT 'Q' as selector
           , xmlelement("QUOTATION",xmlagg(xmlelement(Quotation,
                      xmlelement(CUSTOMERNAME, customername),
                      xmlelement(QUOTE,quoteid )))xmlfile
      From cust, quote
      where custid=quotecustid
      and ptype = :1
      UNION ALL
      SELECT 'S'
           , xmlelement("SALES",xmlagg(xmlelement(SALES,
                      xmlelement(CUSTOMERNAME, customername),
                      xmlelement(QUOTE,salesid )))xmlfile
      From cust, sales
      where custid=salescustid
      and ptype = :1
    WHERE selector = :1
    ;2) Adding a GROUP BY clause, so that XMLAgg doesn't return anything if no rows are selected :
    SELECT xmlelement("QUOTATION",xmlagg(xmlelement(Quotation,
                    xmlelement(CUSTOMERNAME, customername),
                    xmlelement(QUOTE,quoteid )))xmlfile
    From cust, quote
    where custid=quotecustid
    and ptype = :1
    GROUP BY null
    UNION ALL
    SELECT xmlelement("SALES",xmlagg(xmlelement(SALES,
                    xmlelement(CUSTOMERNAME, customername),
                    xmlelement(QUOTE,salesid )))xmlfile
    From cust, sales
    where custid=salescustid
    and ptype = :1
    GROUP BY null
    ;3) Subqueries :
    SELECT case :1
            when 'Q' then ( SELECT ... )
            when 'S' then ( SELECT ... )
          end as xmlfile
    FROM dual
    ;

  • Memory problem when store xml into XMLDB from CLOB source

    Hi,
    We have performed a stress test and looped the following
    stored procedures for 1500 XML documents.
    We found the UGA and PGA memory for this oracle process increased tremendously.
    PGA memory
    ==========
    6MB -> 2.9GB
    UGA memory
    ==========
    5MB -> 2.8GB
    We have also experienced ORA-4030 error when more XML documents were inserted.
    The PGA & UGA memory would not ever be released. We have checked that
    the PGA & UGA memory for this process are still 2.9GB & 2.8GB the day after the stress test.
    Stored Procedure
    ================
    create or replace procedure clob_to_xml (indocid IN NUMBER) AS
    clobdoc clob := EMPTY_CLOB();
    myParser dbms_xmlparser.Parser;
    indomdoc dbms_xmldom.domdocument;
    xsltdomdoc dbms_xmldom.domdocument;
    xsl dbms_xslprocessor.stylesheet;
    outdomdocf dbms_xmldom.domdocumentfragment;
    outnode dbms_xmldom.domnode;
    outclobdoc clob := EMPTY_CLOB();
    proc dbms_xslprocessor.processor;
    xsltpath doc_types.canonical_doc_trim_xslt_name%type;
    xmltabname doc_types.xmldb_table_name%type;
    doc_type doc_types.doc_type%type;
    doc_type_version doc_types.doc_type_version%type;
    category doc_types.category%type;
    sqlstring varchar2(500);
    outxmldoc xmltype;
    begin
    -- clobdoc := :new.canonical_doc_content;
    begin
    select canonical_doc_content into clobdoc
    from canonical_doc
    where dttn_doc_id = indocid;
    exception
    when no_data_found then raise_application_error(-20001,'Doc ID ' || indocid || ' cannot be found');
    when others then raise;
    end;
    begin
    select dt.canonical_doc_trim_xslt_name, dt.xmldb_table_name, ddi.doc_type,ddi.doc_type_version, dt.category
    into xsltpath, xmltabname, doc_type, doc_type_version, category
    from
    dttn_doc_info ddi,
    doc_types dt
    where ddi.dttn_doc_id = indocid
    and ddi.doc_type = dt.doc_type
    and ddi.doc_type_version = dt.doc_type_version;
    exception
    when no_data_found then raise_application_error(-20001,'Doc Type is not defined');
    -- when others then raise;
    end;
    if (category <> 0 ) then
    --only support business document at this moment
    return;
    end if;
    if (xsltpath is null or xsltpath = '') then
    raise_application_error (-20001,'XSLT is not defined on doc_type table - ' || doc_type);
    end if;
    if (xmltabname is null or xmltabname = '') then
    raise_application_error (-20001,'XMLTable is not defined on doc_type table - ' || doc_type);
    end if;
    myParser := dbms_xmlparser.newParser;
    dbms_xmlparser.parseClob(myParser, clobdoc);
    indomdoc := dbms_xmlparser.getDocument(myParser);
    dbms_xmlparser.parseClob(myParser, xdbURIType(xsltpath).getClob());
    xsltdomdoc := dbms_xmlparser.getDocument(myParser);
    xsl := dbms_xslprocessor.newstylesheet(xsltdomdoc, '');
    proc := dbms_xslprocessor.newProcessor;
    --apply stylesheet to DOM document
    outdomdocf := dbms_xslprocessor.processxsl(proc, xsl, indomdoc);
    outnode := dbms_xmldom.makenode(outdomdocf);
    -- PL/SQL DOM API for XMLType can be used here
    dbms_lob.createTemporary(outclobdoc, true);
    dbms_xmldom.writeToClob(outnode, outclobdoc);
    begin
    sqlstring := 'INSERT INTO ' || xmltabname || ' values (:1, :2)';
    EXECUTE IMMEDIATE sqlstring USING indocid, outxmldoc;
    exception
    when others then
    begin
    rollback;
    raise_application_error (-20001,'Cannot insert into XMLDB , docid = ' || indocid);
    end;
    end;
    dbms_lob.freeTemporary(outclobdoc);
    DBMS_XMLDOM.freeDocument(indomdoc);
    DBMS_XMLDOM.freeDocument(xsltdomdoc);
    DBMS_XMLDOM.freeDocFrag(outdomdocf);
    DBMS_XMLPARSER.freeParser(myParser);
    DBMS_XSLPROCESSOR.freeProcessor(proc);
    end;
    Is there anything wrong with the Stored Procedure ?
    My oracle version is 10.1.0.4.
    Thanks & Regards,
    NM

    Mark,
    I think you missed it. OP gave you the version.
    My oracle version is 10.1.0.4.Rahul.

  • ORA-03113 when inserting a CLOB value casted as an XMLType from a SELECT query into a table

    I have a table that contains a CLOB column with pseudo-XML in it. I want to keep this data in an XMLType column so that I can leverage some of Oracle's built-in XML features to parse it more easily.
    The source table is defined as:
    CREATE TABLE "TSS_SRM_CBEBRE_LOGS_V"
    ( "INCIDENT_ID" NUMBER,
    "EVENT_TYPE" VARCHAR2(100 BYTE) NOT NULL ENABLE,
    "EVENT_KEY" VARCHAR2(100 BYTE),
    "CREATION_DATE" TIMESTAMP (6) NOT NULL ENABLE,
    "CREATED_BY" VARCHAR2(100 BYTE) NOT NULL ENABLE,
    "LOG_MSG" CLOB);
    The target (for testing this problem) table is defined as:
    CREATE TABLE "TESTME"
    ( "LOG_MSG" "XMLTYPE"
    My query is:
    insert /*+ APPEND */ into testme ("LOG_MSG")
    select XMLTYPE.createXML("LOG_MSG") as LOG_MSG from "TSS_SRM_CBEBRE_LOGS_V" b;
    In SQL*Developer, my error is: Error report:
    SQL Error: No more data to read from socket
    In SQL*PLUS and Toad, my error is:
    ORA-03113: end-of-file on communication channel
    Process ID: 13903
    Session ID: 414 Serial number: 32739

    By pseudo-XML, I mean that it doesn't have the xml root node. The content structure is similar to the following:
    <a attr1="1" attr2="2" />
    <b attr1="3" attr2="4" />
    <c attr1="5">
    <e attr1="6" attr2="7" />
    <e attr1="8" attr2="9" />
    <e attr1="10" attr2="11" />
    </c>
    <d attr1="12" />
    OK. Those are XML fragments then.
    I'm surprised you say the query alone works.
    We cannot build an XMLType instance using the default constructor or createXML() method when the content is composed of fragments.
    AFAIK the only option is to use XMLParse() with CONTENT option :
    SQL> select xmltype.createxml(LOG_MSG) from TSS_SRM_CBEBRE_LOGS_V;
    ERROR:
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00245: extra data after end of document
    Error at line 2
    ORA-06512: at "SYS.XMLTYPE", line 5
    no rows selected
    SQL> select xmltype(LOG_MSG) from TSS_SRM_CBEBRE_LOGS_V;
    ERROR:
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00245: extra data after end of document
    Error at line 2
    ORA-06512: at "SYS.XMLTYPE", line 272
    ORA-06512: at line 1
    no rows selected
    SQL> select xmlparse(content LOG_MSG) from TSS_SRM_CBEBRE_LOGS_V;
    XMLPARSE(CONTENTLOG_MSG)
    <a attr1="1" attr2="2" />
    <b attr1="3" attr2="4" />
    <c attr1="5">
    <e attr1="6" a
    Anyway, you'll eventually hit this :
    SQL> insert into testme (LOG_MSG)
      2  select XMLparse(content LOG_MSG)
      3  from TSS_SRM_CBEBRE_LOGS_V;
    insert into testme (LOG_MSG)
    ERROR at line 1:
    ORA-19010: Cannot insert XML fragments

  • ORA-29540: class oracle/xml/sql/query/OracleXMLStaticQuery does not exist

    I am getting below error when trying to generate xml. Browsing on google did not help me. I would appreciate if someone can provide the solution.
    SQL> select dbms_xmlquery.getxml('select * from dual', 2) from dual;
    ERROR:
    ORA-29540: class oracle/xml/sql/query/OracleXMLStaticQuery does not exist
    ORA-06512: at "SYS.DBMS_XMLQUERY", line 19
    ORA-06512: at "SYS.DBMS_XMLQUERY", line 271
    ORA-06512: at line 1

    Then it is probably not the case that you are affected by the issue described in Metalink document 185857.1, but if I were you I would check it anyway, since it might be the problem.

  • What is the use of jsp when compare with Struts

    what is the use of jsp when compare with Struts

    JSP Tag Libraries are great for reusable content formatting and ligic.
    For example, let's say you have this Shopping site. Each item you sell is stored in a database, and you get them out depending on Catagories, creating a List of ItemBeans. You allways want to display the items with a catagory header, then a <table> with the item number, the description and the price.
    Instead of creating a bunch of logic in the JSP that does this, you can pass it on to a Tag that might look like this in your JSP:
    <shopping:itemTable catagory="${selectedCatagory}" items="${itemsForCatagory}" />
    This would make the JSP easier to read and work with.
    The actual uses are incredible. Have you used the <jsp:useBean ...> tag? That is an example of a use of the Custom Tag Libraries.
    Furthermore, look into JSTL (JSP Standard Tag Libraries). They are a collection of tags (API by Sun, coding by Apache) used to do many of the standard actions you might want/need to do in JSPs, like a conditional tag (c:if only do something if the test is true), multiple-conditional tags (c:choos c:when c:otherwise) like an if [else if] else construct. Looping through an array or Collection (c:forEach), storeing values in scopes (c:set) formating numbers and dates (the fmt library), xml transformations (xml library), and lots of other things that you could replace scriptlet code with.

  • Error when  importing xml data

    I am getting the following error when loading xml datafile to my Oracle XE database table. This data I exported from htmldb.oracle.com.
    ORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing LPX-00222: error received from SAX callback function
    please help
    George

    George,
    I expect that this is simply an incompatibility with the date format that was used for XML Import/Export as part of XE Beta. This is a bug that has been fixed for XE production and you will be able to freely export from HTML DB 2.0 and import into XE and vice versa.
    Your NLS settings do not control this. The date format used for XML Export is fixed - a canonical date format is always used.
    If you want to be able to import into XE Beta, your date fields probably look like:
    <HIREDATE>2005-12-03T00:00:00.000</HIREDATE>Just remove the trailing .000 from your date entries.
    <HIREDATE>2005-12-03T00:00:00</HIREDATE>
    Note: This will only be necessary for XE Beta. You should not have to do this for XE Production.
    Joel

  • Got error message when store XML documents into XML DB repository, via WebD

    Hi experts,
    I am in I am in Oracle Enterprise Manager 11g 11.2.0.1.0.
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 22 11:40:23 2011
    I got error message when store XML documents into XML DB repository, via WebDAV.
    I have successfully registered 5 related schemas and generated 1 table.
    I have inserted 40 .xml files into this auto generated table.
    using these data I created relational view successfully.
    but since I couldn't store XML documents into XML DB repository, via WebDAV
    when I query using below code:
    SELECT rv.res.getClobVal()
    FROM resource_view rv
    WHERE rv.any_path = '/home/DEV/messages/4fe1-865d-da0db9212f34.xml';
    I got nothing.
    My ftp code is listed below:
    ftp> open localhost 2100
    Connected to I0025B368E2F9.
    220- C0025B368E2F9
    Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.
    220 I0025B368E2F9 FTP Server (Oracle XML DB/Oracle Database) ready.
    User (I0025B368E2F9:(none)): fda_xml
    331 pass required for FDA_XML
    Password:
    230 FDA_XML logged in
    ftp> cd /home/DEV/message
    250 CWD Command successful
    ftp> pwd
    257 "/home/DEV/message" is current directory.
    ftp> ls -la
    200 PORT Command successful
    150 ASCII Data Connection
    drw-r--r-- 2 FDA_XML oracle 0 DEC 17 19:19 .
    drw-r--r-- 2 FDA_XML oracle 0 DEC 17 19:19 ..
    226 ASCII Transfer Complete
    ftp: 115 bytes received in 0.00Seconds 115000.00Kbytes/sec.
    250 SET_CHARSET Command Successful
    ftp> put C:\ED\SPL\E_Reon_Data\loaded\4fe1-865d-da0db9212f34.xml
    200 PORT Command successful
    150 ASCII Data Connection
    550- Error Response
    ORA-00600: internal error code, arguments: [qmxConvUnkType], [], [], [], [], [], [], [], [], [], [], []
    550 End Error Response
    ftp: 3394 bytes sent in 0.00Seconds 3394000.00Kbytes/sec.
    I have tried all suggestion from another thread such as:
    alter system set events ='31150 trace name context forever, level 0x4000'
    SQL> alter system set shared_servers = 1;
    but failed.
    is there anyone can help?
    Thanks.
    Edited by: Cow on Mar 29, 2011 12:58 AM

    Hi experts,
    I am in I am in Oracle Enterprise Manager 11g 11.2.0.1.0.
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 22 11:40:23 2011
    I got error message when store XML documents into XML DB repository, via WebDAV.
    I have successfully registered 5 related schemas and generated 1 table.
    I have inserted 40 .xml files into this auto generated table.
    using these data I created relational view successfully.
    but since I couldn't store XML documents into XML DB repository, via WebDAV
    when I query using below code:
    SELECT rv.res.getClobVal()
    FROM resource_view rv
    WHERE rv.any_path = '/home/DEV/messages/4fe1-865d-da0db9212f34.xml';
    I got nothing.
    My ftp code is listed below:
    ftp> open localhost 2100
    Connected to I0025B368E2F9.
    220- C0025B368E2F9
    Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.
    220 I0025B368E2F9 FTP Server (Oracle XML DB/Oracle Database) ready.
    User (I0025B368E2F9:(none)): fda_xml
    331 pass required for FDA_XML
    Password:
    230 FDA_XML logged in
    ftp> cd /home/DEV/message
    250 CWD Command successful
    ftp> pwd
    257 "/home/DEV/message" is current directory.
    ftp> ls -la
    200 PORT Command successful
    150 ASCII Data Connection
    drw-r--r-- 2 FDA_XML oracle 0 DEC 17 19:19 .
    drw-r--r-- 2 FDA_XML oracle 0 DEC 17 19:19 ..
    226 ASCII Transfer Complete
    ftp: 115 bytes received in 0.00Seconds 115000.00Kbytes/sec.
    250 SET_CHARSET Command Successful
    ftp> put C:\ED\SPL\E_Reon_Data\loaded\4fe1-865d-da0db9212f34.xml
    200 PORT Command successful
    150 ASCII Data Connection
    550- Error Response
    ORA-00600: internal error code, arguments: [qmxConvUnkType], [], [], [], [], [], [], [], [], [], [], []
    550 End Error Response
    ftp: 3394 bytes sent in 0.00Seconds 3394000.00Kbytes/sec.
    I have tried all suggestion from another thread such as:
    alter system set events ='31150 trace name context forever, level 0x4000'
    SQL> alter system set shared_servers = 1;
    but failed.
    is there anyone can help?
    Thanks.
    Edited by: Cow on Mar 29, 2011 12:58 AM

  • Error while loadjava xmlparserv2.jar: ORA-04043: object oracle/xml/.. does not exist

    In Oracle8i.15, I tried to install xmlparserv2.jar after I downloaded xdk_plsql_9_2_0_2_0.zip and upzip to local machine.
    However, when I issued the follwoing command:
    loadjava -v -r -user SYSTEM/manager -force xmlparserv2.jar
    For each class, it has the following error message:
    resolving: oracle/xml/async/DOMBuilderErrorListener
    Error while resolving class oracle/xml/async/DOMBuilderErrorListener
    ORA-04043: object oracle/xml/async/DOMBuilderErrorListener does not exist
    resolving: oracle/xml/comp/CXMLParser
    Error while resolving class oracle/xml/comp/CXMLParser
    ORA-04043: object oracle/xml/comp/CXMLParser does not exist
    How can I solve this problem?
    Thanks in advance.

    Do you mean you use 8.1.5? You can't directly load the xmlparserv2.jar to it.

Maybe you are looking for