XML from a procedure

Hello,
I am trying to pass a value in XML from a procedure to another (non-apex) application.
The issue is that in the following code, I've replaced this line:
qryCtx := dbms_xmlgen.newContext('select hash_value from hash');
with this line:
qryCtx := dbms_xmlgen.newContext(V_Return);
I did this because the value that I want to be in XML is in the variable V_Return and not in a table. I get a compilation error:
PLS-00382: expression is of wrong typeCompilation failed
Is there a way to use newContext with a variable value rather than a select statement from a table?
Thank you for any help!
Matt
create or replace PROCEDURE DO_HASH2 (p_username in VARCHAR2, p_app_id in VARCHAR2, p_app_name in VARCHAR2) is
  v_pad_amt NUMBER;
  v_salt RAW( 2048 );
  v_encrypted_str RAW( 2048 );
  v_return VARCHAR2( 255 );
  p_str VARCHAR2(255);
  p_thing_to_hash VARCHAR2(255);
  v_hash_date TIMESTAMP;
  qryCtx DBMS_XMLGEN.ctxHandle;
  result CLOB;
  nextval NUMBER;
Begin
p_thing_to_hash := p_app_name;
  -- Create Salt
  V_Salt := Utl_Raw.Cast_To_Raw( Substr( To_Char( Sqrt(( 8438/12*4-7/256 ) ) ), 3, 38 ) );
    -- If p_thing_to_hash is not null then
    -- Pad the string so that it will encrypt properly
    IF LENGTH( p_thing_to_hash ) MOD 8 > 0 THEN
        v_pad_amt        := TRUNC( LENGTH( p_thing_to_hash ) / 8 ) + 1;
        p_str  := RPAD(p_thing_to_hash, v_pad_amt * 8, '^' );
    END IF;
    -- Encrypt the string
    Dbms_Obfuscation_Toolkit.Desencrypt(Input => Utl_Raw.Cast_To_Raw( p_str ), Key => V_Salt, Encrypted_Data => V_Encrypted_Str );
    -- Now change the raw to hex
    V_Return := Rawtohex( V_Encrypted_Str );
--qryCtx := dbms_xmlgen.newContext('select hash_value from hash');
qryCtx := dbms_xmlgen.newContext(V_Return);
  -- set the row header to be HASH
  DBMS_XMLGEN.setRowTag(qryCtx, 'HASH');
  -- now get the result
  result := DBMS_XMLGEN.getXML(qryCtx);
-- Set the timestamp
select localtimestamp into v_hash_date from dual;
-- Insert the user info into the HASH table
INSERT INTO hash(USERNAME,APP_ID,APP_NAME,HASH_VALUE,HASH_DATE,RESULT) VALUES (p_username, p_app_id,p_app_name,V_Return,v_hash_date,result);
  --close context
DBMS_XMLGEN.closeContext(qryCtx);
END DO_HASH2;
HASH Table structure:
Column Name     Data Type
ID     NUMBER
USERNAME     VARCHAR2(250)
APP_ID     VARCHAR2(250)
APP_NAME     VARCHAR2(250)
HASH_VALUE     VARCHAR2(250)
HASH_DATE     TIMESTAMP(6)
RESULT     CLOB

>
The issue is that in the following code, I've replaced this line:
qryCtx := dbms_xmlgen.newContext('select hash_value from hash');
with this line:
qryCtx := dbms_xmlgen.newContext(V_Return);
I did this because the value that I want to be in XML is in the variable V_Return and not in a table. I get a compilation error:
PLS-00382: expression is of wrong typeCompilation failed
Is there a way to use newContext with a variable value rather than a select statement from a table?
>
It seems unlikely. The DBMS_XMLGEN documentation says:
>
The DBMS_XMLGEN package converts the results of a SQL query to a canonical XML format. The package takes an arbitrary SQL query as input, converts it to XML format, and returns the result as a CLOB.
>
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/d_xmlgen.htm#i1012053
If <tt>VReturn</tt> is not a SQL query then you will need to use one of the (many) other ways of generating XML. This question has nothing to do with APEX and would be better addressed to the XML DB.
Additionally, the recommended methods for XML generation, encryption and hashing are heavily version-dependent and you should always quote the relevant DB version/edition information to ensure an appropriate answer. For example, DBMS_OBFUSCATION_TOOLKIT is deprecated as of Oracle 10g and replaced by DBMS_CRYPTO.

Similar Messages

  • XML from stored procedure

    I am calling a oracle stored function which returns REF CURSOR.. I am using XDP to convert the result set into XML.. But the result coming from my java program is like below..
    I don't want to have those bind variables (:B1, :B2 etc) in there, how can I get the record variable names instead of bind variables.. Thanks for your help..
    stmt.execute(); // Execute the statement.
    ResultSet rset = (ResultSet)stmt.getObject(1); // Get the ResultSet
    OracleXMLQuery qry = new OracleXMLQuery(_conn,rset); // prepare Query class
    qry.setRaiseNoRowsException(true);
    qry.setRaiseException(true);
    qry.keepCursorState(true); // set options (keep the cursor alive..
    while ((str = qry.getXMLString())!= null)
    System.out.println(str);
    <?xml version = '1.0'?>
    <ROWSET>
    <ROW num="1">
    <:B1>36874538</:B1>
    <:B2>SB</:B2>
    <:B3>SBMB</:B3>
    <:B4>LTL</:B4>
    <:B5>Y649</:B5>
    <:B6>I</:B6>
    <:B8>IR</:B8>
    <:B9>CO</:B9>
    <:B10>3033693323</:B10>
    <:B12>0</:B12>
    </ROW>
    </ROWSET>

    Would you post the sample SQL Query or send test case to me at: [email protected]

  • Generating an xml from a pl/sql procedure

    Hi Friends,
    I have come up with a requirement to generate an xml from a pl/sql procedure.
    I did some R & D and also got some sample procedures but could not understand the datatypes being used.
    The procedure declares variables like this:
    doc                  xmldom.DOMDocument;
    mainNode         xmldom.DOMNode;
    headerElem      xmldom.DOMElement; Pls could anyone tell what do these xmldom.DOMDocument, xmldom.DOMNode and xmldom.DOMElement mean?
    Later in the procedure, these variables are assigned values like
    doc      := xmldom.newDOMDocument;
    mainNode := xmldom.makenode(doc); This went a bouncer on me.
    Pls help.
    Thanks in advance ...!

    You can check this one -- Learned this from michael.
    satyaki>
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for Linux: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    satyaki>
    satyaki>
    satyaki>with person_h
      2  as
      3    (
      4      select 1 id, 'M' gender, 'W' race, '170' weight from dual union all
      5      select 1, 'M', 'W', '170' from dual union all
      6      select 1, 'M', 'W', '180' from dual union all
      7      select 1, 'M', NULL, '175' from dual union all
      8      select 1, NULL, 'W', NULL from dual
      9    )
    10    select xmlelement("Person",(
    11                                 select xmlagg(xmlelement("Sex", gender))
    12                                 from (
    13                                        select distinct gender
    14                                        from person_h
    15                                        where id = 1
    16                                        and gender is not null
    17                                      ) pg
    18                                ),
    19                                (
    20                                  select xmlagg(xmlforest(race as "Race"))
    21                                  from (
    22                                         select distinct race
    23                                         from person_h
    24                                         where id = 1
    25                                       ) pg
    26                                ),
    27                                (
    28                                  select xmlagg(xmlforest(weight as "Weight"))
    29                                  from (
    30                                         select distinct weight
    31                                         from person_h
    32                                         where id = 1
    33                                       ) pg
    34                                 )
    35                     ).getstringval() Res
    36    from dual;
    RES
    <Person><Sex>M</Sex><Race>W</Race><Weight>170</Weight><Weight>175</Weight><Weight>180</Weight></Person>
    satyaki>Regards.
    Satyaki De.

  • Best method to transfer large strings (XML data) to/from stored procedure

    Hi!
    I'm trying to call a PL/SQL procedure from Java. The procedure inputs a string (XML) that is parsed, and returns a result string (also XML).
    Typical size of the string is 5kb -> 1mb.
    I can see two possible solutions:
    1) String / LONG
    2) CLOB (Using DMBS_LOB.createTemporary and getting a CLOB locator and passing the locator to the stored procedure)
    Does anyone have other suggestions?
    What is the fastest method for transferring XML structures from to and from stored procedures?
    Anders

    Anders,
    I would say it depends on your requirement. Both the methods have some advantages and disadvantages.
    Using a CLOB means that you have to use vendor specific libraries but this is more extendible and I fast too.
    Using String/Long will be more portable in the long run but again you lose on speed/performance.
    Just a doubt of mine... If I got it correct, you are transforming one XML to another XML based on some conditions. Why dont you use XSL and XSL StyleSheet Processor packaged with XDK for this? I think this would be the fastest way.
    Hope this helps.

  • Submitting xml publisher not producing output file when submiting from Oracle Procedure

    When Running XML publisher program from Oracle Procedure, Program not generating output file, but same XML publisher program running from Concurrent program runs and produces the output file.
    Here is the code
    CREATE OR REPLACE PROCEDURE apps.wmmgd_sepa_formats (
       p_return_msg      OUT      VARCHAR2,
       p_return_code     OUT      NUMBER,
       p_payment_batch   IN       VARCHAR2                                    ---,
    --- p_bank_name          in varchar2
    IS
       name:      wmmgd_sepa_formats
       purpose: this procedureis to  create SEPA payment formats
       revisions:
       ver      date        author           description
       1.0     6/11/2013  V Gongireddy  Created the Procedure
       l_ret         BOOLEAN;
       l_req_id      NUMBER;
       v_org_id      NUMBER;
       v_cntr        NUMBER;
       v_file_name   fnd_concurrent_requests.outfile_name%TYPE;
       v_language    VARCHAR2 (20);
    BEGIN
       SELECT fnd_profile.VALUE ('ORG_ID')
         INTO v_org_id
         FROM DUAL;
       fnd_file.put_line (fnd_file.LOG, 'org id ' || v_org_id);
       fnd_file.put_line (fnd_file.output, 'Start org id ' || v_org_id);
       FOR i IN 1 .. 10000
       LOOP
          v_cntr := v_cntr + 1;
       END LOOP;
       l_ret :=
          fnd_request.add_layout ('SQLAP',
                                  ' WMMGDSEPAFORMATXSL',
                                  'en',
                                  'US',
                                  'XML'
       IF l_ret = TRUE
       THEN
          BEGIN
             fnd_file.put_line (fnd_file.output,
                                'Payment batch ' || p_payment_batch
             l_req_id :=
                fnd_request.submit_request ('SQLAP',
                                            'WMMGDSEPAFORMAT',
                                            FALSE,
                                            p_payment_batch
             v_cntr := 0;
             FOR i IN 1 .. 10000
             LOOP
                v_cntr := v_cntr + 1;
             END LOOP;
             p_return_msg := 'Request submitted. ID = ' || l_req_id;
             p_return_code := 0;
             COMMIT;
          EXCEPTION
             WHEN OTHERS
             THEN
                p_return_msg :=
                      'Payment Request set submission failed - unknown error: '
                   || SQLERRM;
                p_return_code := 2;
                fnd_file.put_line (fnd_file.LOG,
                                   'the_request_id ' || l_req_id || p_return_msg
          END;
       END IF;
    END wmmgd_sepa_formats;
    Thanks in advance

    And metalink note 1100253.1 states that this issue (java.lang.StackOverflowError) might be caused by a too large set of data to be sorted in the layout file. Recommendation is to removed the sort from the layout file and instead sort the data already in the data definition.
    regards,
    David.

  • XML Tag Name too long, won't run from a procedure

    I have a select statement that creates an xml file using the xmlelement syntax. When I run the select statement on its own it runs fine and the xml file is generated with no errors. I'm building a procedure that does a bunch of stuff, with the end product being the generated xml file. Everything in the procedure works great, until I add the xmlelement select statement. When I try to compile it I get an error message that one of the identifiers is too long (it is 40 characters). Is there something special I need to do to get this to run within a procedure with the given tag names? I can't change the names as they are set by another department.
    Thanks.

    Sorry about that, Mondays are painful...
    I'm not sure if you want the whole procedure, it is quite long, but here is the xml part. I am using TOAD, and when I right click and Compile I receive this error: PLS-00114: identifier 'PostalCodeOfPatientsCurrentResidenceKnownFlag FROM Admissions' too long
    The part that confuses me is why does it run fine when I run it on it's own, I get the expected XML file, but when I try to run it from a procedure it fails.
    SELECT sys_xmlgen(XMLELEMENT("MHR", XMLELEMENT("Control",      XMLELEMENT("DeliverySiteInstitutionNumber",a.institution_number),
                                                           XMLELEMENT("CreationTimestamp",sysdate),
                                                                               XMLELEMENT("DSSVersion",'NotSure'),
                                                                               XMLELEMENT("ResubmissionFlag",'1'),
                                                                               XMLELEMENT("SubmissionYear",a.REPORT_YR_AND_MNTH),
                                                                               XMLELEMENT("SubmissionPeriod",a.SUBMISSION_PERIOD)),
         XMLELEMENT("Stakeholders",XMLELEMENT("Stakeholder", XMLELEMENT("SubmissionType",'A'),
                                                                                                                  XMLELEMENT("ULI", a.ULI),
                                                                                              XMLELEMENT("Gender",'Male/Female/Unknown'),
                                                                     XMLELEMENT("BirthDate", XMLATTRIBUTES(a.BIRTH_DATE_TYPE,a.BIRTH_DATE)),
                                                                                                                  XMLELEMENT("ResidenceInformation",XMLELEMENT("ProvinceOfPatientsResidence",a.PROVINCE_OF_RESIDENCE),
                                                                                                                                      XMLELEMENT("PostalCodeOfPatientsCurrentResidenceKnownFlag",a.POSTALCODE_KNOWN_FLAG),
                                                                                                                                                          XMLELEMENT("PostalCodeOfPatientsCurrentResidence",a.POSTALCODE))
                        )).getClobVal() AS "result"
    FROM Admissions a
    Edited by: user11293056 on Jun 22, 2009 12:54 PM

  • Timed Out Error while waiting for response from DB Procedure

    Hi Gurus,
    We are encountering a problem in our production environment. The system is implemented using AIA foundation pack 2.5 on SOA suite 10.1.3.4.
    We have a BPEL process A which calls an ESB Service which inturn calls BPEL Process B. In process B, we have a DB procedure call which waits for a response from
    a DB procedure. The procedure doesn't reply on time and Process B remains in waiting state to get the response from DB Procedure wherein Process A errors out by showing as "Timed Out Error".
    This issue is intermittent and we have already increased transaction-time outs in transaction-manager.xml to 7200 and ejb-orion-jar.xml to 3600.
    When we encountered this problem, we found out that there are too many connections open and when we bounced the server, everything was restored to nornal but as it is a production env. we can't do it over and over again.
    We have 2 nodes each having max connections as 100 and min. as 0.
    Is there a limit to max no. of connections or can we do something in DB side to ensure that it doesn't happen again ?
    Please suggest.
    Thanks,
    Vikas Manchanda

    Hi Gurus,
    We are encountering a problem in our production environment. The system is implemented using AIA foundation pack 2.5 on SOA suite 10.1.3.4.
    We have a BPEL process A which calls an ESB Service which inturn calls BPEL Process B. In process B, we have a DB procedure call which waits for a response from
    a DB procedure. The procedure doesn't reply on time and Process B remains in waiting state to get the response from DB Procedure wherein Process A errors out by showing as "Timed Out Error".
    This issue is intermittent and we have already increased transaction-time outs in transaction-manager.xml to 7200 and ejb-orion-jar.xml to 3600.
    When we encountered this problem, we found out that there are too many connections open and when we bounced the server, everything was restored to nornal but as it is a production env. we can't do it over and over again.
    We have 2 nodes each having max connections as 100 and min. as 0.
    Is there a limit to max no. of connections or can we do something in DB side to ensure that it doesn't happen again ?
    Please suggest.
    Thanks,
    Vikas Manchanda

  • Generating XML from database

    I'm a total newbie in XML DB and need advice on generating XML from database.
    The situation is the following: there is a legacy web application which uses an XML document as a configuration file. This document conforms to some well-defined schema. For instance:
    <config>
         <title value="TITLE" />
         <subtitle value="SUBTITLE" />
         <style url="default.css" />
         <widgets>
              <widget id="1" opened="true" />
              <widget id="2" opened="false" />
         </widgets>
    </config>
    It contains portions of static data which are common for all users as well as dynamic personal data.
    Dynamic data comes from two sources:
    1) security considerations (for instance, not all widgets are available for some users) - thus the "master" configuration content must be filtered, but not otherwise modified;
    2) user preferences (for instance, user can set widget2 to be opened by default) - thus values of some attributes must be different for each user. When the user saves her preferences, the entire document with new values is posted back to server.
    We want to try to store user preferences, apply security and generate personalized configuration documents using XML DB.
    So we need advice on storage models and generation procedures - which should be more efficient and easy to support or extend.
    Please note, that there is no requirement to actually store data as XML.
    Thanks in advance!
    P.S.: Sorry for the incomplete initial post.
    Edited by: WxD on 27.09.2010 11:45

    Hi,
    See this link for more details
    http://www.stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10790/xdb13gen.htm

  • Time Out Error while waiting for response from DB Procedure

    Hi Gurus,
    We are encountering a problem in our production environment. The system is implemented using AIA foundation pack 2.5 on SOA suite 10.1.3.4.
    We have a BPEL process A which calls an ESB Service which inturn calls BPEL Process B. In process B, we have a DB procedure call which waits for a response from
    a DB procedure. The procedure doesn't reply on time and Process B remains in waiting state to get the response from DB Procedure wherein Process A errors out by showing as "Timed Out Error".
    This issue is intermittent and we have already increased transaction-time outs in transaction-manager.xml to 7200 and ejb-orion-jar.xml to 3600.
    When we encountered this problem, we found out that there are too many connections open and when we bounced the server, everything was restored to nornal but as it is a production env. we can't do it over and over again.
    We have 2 nodes each having max connections as 100 and min. as 0.
    Is there a limit to max no. of connections or can we do something in DB side to ensure that it doesn't happen again ?
    Please suggest.
    Thanks,
    Vikas Manchanda

    Hi Anuj,
    I don't think it is a problem with connection reaching to max numbers because this issue is coming on very intermittent basis.we don't have any other processes using
    the same connection pool and this issue is coming even when there is no load on the server. This is recent trace from the production environment. Also i don't have any thing called "abandoned-connection-pool" in my data-sources.xml.
    <2011-07-07 13:09:16,101> <ERROR> <default.collaxa.cube> <BaseCubeSessionBean::logError> Error while invoking bean "delivery": Waiting for response has timed out. The conversation id is null. Please check the process instance for detail.
    com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is null. Please check the process instance for detail.
    at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:109)
    at sun.reflect.GeneratedMethodAccessor113.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
    at com.evermind.server.ThreadState.runAs(ThreadState.java:693)
    at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
    at DeliveryBean_RemoteProxy_4bin6i8.request(Unknown Source)
    at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processNormalOperation(SOAPRequestProvider.java:451)
    at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processBPELMessage(SOAPRequestProvider.java:274)
    at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processMessage(SOAPRequestProvider.java:120)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:956)
    at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:349)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:466)
    at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:114)
    at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:96)
    at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:194)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
    at oracle.security.jazn.oc4j.JAZNFilter$1.run(JAZNFilter.java:400)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
    at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:414)
    at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:623)
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
    at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
    at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313)
    at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199)
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
    at java.lang.Thread.run(Thread.java:595)
    Caused by: com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is null. Please check the process instance for detail.
    at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:576)
    at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:465)
    at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:134)
    at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java)
    Please suggest.
    Thanks,
    Vikas Manchanda

  • Error saving xml from model to file

    Hello.
    I am trying to create an xml file based on example GEO_DIM.dtd
    I have a dataserver
    jdbc:snps:xml?d=/oracle/product/odi_1/oracledi/demo/xml/GEO_DIM.dtd&s=MY_GEO_SCHEMA&lf=/logs/demo_geo_dim.log&ll=31
    xml model works fine. I can do Insert into and populate the whole model with data.
    When I try to save it on the disk using (on target)
    create xmlfile ' /tmp/test_demo_geo.xml' from schema MY_GEO_SCHEMA
    I get an error
    ODI-1272: The Logical Schema has not been set on source for populate_demo_geo.
    Caused By: java.lang.NullPointerException
    at com.sunopsis.jdbc.driver.xml.SnpsXmlPreparedStatementRedirector.executeUpdate(SnpsXmlPreparedStatementRedirector.java:625)
    What this driver wants from me?
    I just want to write the xml I’ve created to the disk.
    I’ve tried to do this CREATE XMLFILE command on source, but, it doesn’t help either. I just receive
    java.lang.NullPointerException
    at com.sunopsis.jdbc.driver.xml.SnpsXmlPreparedStatementRedirector.executeUpdate(SnpsXmlPreparedStatementRedirector.java:625)
    at com.sunopsis.jdbc.driver.xml.SnpsXmlPreparedStatement.executeUpdate(SnpsXmlPreparedStatement.java:113)
    Please, It just makes me mad, sorry…

    Hi Lembit,
    Thanks for posting current syntax to write the xml file.
    Even i am triying the same to write out an xml file from my xml schema.
    I executed my interface which inserted 3 records into target XML schema and inserted data i can in the XML model data store.
    I wrote a procedure to write XML schema data including newly inserted 3 records, i went through,but all record of XML model is written into file.
    my create xml command looks like create xml file "D:\temp\XML\gan_out.xml" from schema DEPT_TRG_SCH.
    Now i have around 10 records in the XML datastore in target XML model. I want to write an XML file each record from XML data store.
    Please help,
    Thanks,

  • Generating xml from diff tables in a db

    hi,
    i need to write a oracle procedure, which when called generates xml doc (building xml from different tables in database.). i got the DTDs . but i still dont understand how can the data be pulled from diff tables and put in the one xml? can anyone give me rough idea.. i know that i have to use xmlquery and xml_save packages... but still not much clear..
    i m working on oracle 8i database. any help is appreciated.. thanks.

    Any feedback to the above questions would be greatly appreciated!

  • XML in Stored Procedure

    I'm using a 10g
    I have this XML.
    <item>
    <name>Book</name>
    <price>12</price>
    <itemno>230</itemno>
    <qty>57</qty>
    <detail>Oracle book</detail>
    <company>Oracle</company>
    </item>
    I want this result.(price, itemno & company)
    <item>
    <price>12</price>
    <itemno>230</itemno>
    <company>Oracle</company>
    </item>
    Would you please help me how to get this in stored procedure?
    Thank you.

    Or
    SQL>  SELECT XMLELEMENT("item", d.xml.EXTRACT ('item/price | item/itemno | item/company')) new_xml
      FROM (SELECT XMLTYPE
                      ('<item>
    <name>Book</name>
    <price>12</price>
    <itemno>230</itemno>
    <qty>57</qty>
    <detail>Oracle book</detail>
    <company>Oracle</company>
    </item>') xml  FROM DUAL) d
    NEW_XML                                                                                
    <item><price>12</price>                                                                
    <itemno>230</itemno>                                                                   
    <company>Oracle</company>                                                              
    </item>                                                                                
                                                                                                                           

  • Database updation using XML and stored Procedure?

    Hello,
    I want to perform updation in multiple tables using XML files.Please suggest can I do updation using xml and stored procedure.
    If yes then which is more efficient and takes less time.
    1.Updation using xml files only
    2.Updation using xml files with stored procedure.
    3.Stored procedure alone.
    If direct xml and stored procedure communication is possible.then please write how.
    Thanks in advance for any help.

    Here's a sample. The next code drop of the XSQL Servlet will make the easy-to-do from within XSQL Pages:
    package package1;
    import org.w3c.dom.*;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.xml.sql.query.OracleXMLQuery;
    public class Class1 extends Object {
    public static void main( String[] arg ) throws Exception {
    Connection conn = getConnection();
    CallableStatement ocs = conn.prepareCall("begin ? := App.HotItems('PAUL'); end;");
    ocs.registerOutParameter(1,OracleTypes.CURSOR);
    ocs.execute();
    ResultSet rs = ((OracleCallableStatement)ocs).getCursor(1);
    OracleXMLQuery oxq = new OracleXMLQuery(conn,rs);
    System.out.println(oxq.getXMLString());
    oxq.close();
    rs.close();
    ocs.close();
    conn.close();
    public static Connection getConnection() throws Exception {
    String username = "scott";
    String password = "tiger";
    String dburl = "jdbc:oracle:thin:@localhost:1521:xml";
    String driverClass = "oracle.jdbc.driver.OracleDriver";
    Driver d = (Driver)Class.forName(driverClass).newInstance();
    return DriverManager.getConnection(dburl,username,password);
    null

  • Generating XML from SQL queries and saving to an xml file?

    Hi there,
    I was wondering if somebody could help with regards to the following:
    Generating XML from SQL queries and saving to a xml file?
    We want to have a procedure(PL/SQL) that accepts an order number as an input parameter(the procedure
    is accessed by our software on the client machine).
    Using this order number we do a couple of SQL queries.
    My first question: What would be our best option to convert the result of the
    queries to xml?
    Second Question: Once the XML has been generated, how do we save that XML to a file?
    (The XML file is going to be saved on the file system of the server that
    the database is running on.)
    Now our procedure will also have a output parameter which returns the filename to us. eg. Order1001.xml
    Our software on the client machine will then ftp this XML file(based on the output parameter[filename]) to
    the client hard drive.
    Any information would be greatly appreciated.
    Thanking you,
    Francois

    If you are using 9iR2 you do not need to do any of this..
    You can create an XML as an XMLType using the new SQL/XML operators. You can insert this XML into the XML DB repository using DBMS_XDB.createResource. You can then access the document from the resource. You can also return the XMLType containing the XML directly from the PL/SQL Procedure.

  • Generating XML from SQL queries and saving to a xml file?

    Hi there,
    I was wondering if somebody could help with regards to the following:
    Generating XML from SQL queries and saving to a xml file?
    We want to have a stored procedure(PL/SQL) that accepts an order number as an input parameter(the procedure
    is accessed by our software on the client machine).
    Using this order number we do a couple of SQL queries.
    My first question: What would be our best option to convert the result of the
    queries to xml?
    Second Question: Once the XML has been generated, how do we save that XML to a file?
    (The XML file is going to be saved on the file system of the server that
    the database is running on.)
    Now our procedure will also have a output parameter which returns the filename to us. eg. Order1001.xml
    Our software on the client machine will then ftp this XML file(based on the output parameter[filename]) to
    the client hard drive.
    Any information would be greatly appreciated.
    Thanking you,
    Francois

    Hi
    Here is an example of some code that i am using on Oracle 817.
    The create_file procedure is the one that creates the file.
    The orher procedures are utility procedures that can be used with any XML file.
    PROCEDURE create_file_with_root(po_xmldoc OUT xmldom.DOMDocument,
    pi_root_tag IN VARCHAR2,
                                            po_root_element OUT xmldom.domelement,
                                            po_root_node OUT xmldom.domnode,
                                            pi_doctype_url IN VARCHAR2) IS
    xmldoc xmldom.DOMDocument;
    root xmldom.domnode;
    root_node xmldom.domnode;
    root_element xmldom.domelement;
    record_node xmldom.domnode;
    newelenode xmldom.DOMNode;
    BEGIN
    xmldoc := xmldom.newDOMDocument;
    xmldom.setVersion(xmldoc, '1.0');
    xmldom.setDoctype(xmldoc, pi_root_tag, pi_doctype_url,'');
    -- Create the root --
    root := xmldom.makeNode(xmldoc);
    -- Create the root element in the file --
    create_element_and_append(xmldoc, pi_root_tag, root, root_element, root_node);
    po_xmldoc := xmldoc;
    po_root_node := root_node;
    po_root_element := root_element;
    END create_file_with_root;
    PROCEDURE create_element_and_append(pi_xmldoc IN OUT xmldom.DOMDocument,
    pi_element_name IN VARCHAR2,
                                            pi_parent_node IN xmldom.domnode,
                                            po_new_element OUT xmldom.domelement,
                                            po_new_node OUT xmldom.domnode) IS
    element xmldom.domelement;
    child_node xmldom.domnode;
    newelenode xmldom.DOMNode;
    BEGIN
    element := xmldom.createElement(pi_xmldoc, pi_element_name);
    child_node := xmldom.makeNode(element);
    -- Append the new node to the parent --
    newelenode := xmldom.appendchild(pi_parent_node, child_node);
    po_new_node := child_node;
    po_new_element := element;
    END create_element_and_append;
    FUNCTION create_text_element(pio_xmldoc IN OUT xmldom.DOMDocument, pi_element_name IN VARCHAR2,
    pi_element_data IN VARCHAR2, pi_parent_node IN xmldom.domnode) RETURN xmldom.domnode IS
    parent_node xmldom.domnode;                                   
    child_node xmldom.domnode;
    child_element xmldom.domelement;
    newelenode xmldom.DOMNode;
    textele xmldom.DOMText;
    compnode xmldom.DOMNode;
    BEGIN
    create_element_and_append(pio_xmldoc, pi_element_name, pi_parent_node, child_element, child_node);
    parent_node := child_node;
    -- Create a text node --
    textele := xmldom.createTextNode(pio_xmldoc, pi_element_data);
    child_node := xmldom.makeNode(textele);
    -- Link the text node to the new node --
    compnode := xmldom.appendChild(parent_node, child_node);
    RETURN newelenode;
    END create_text_element;
    PROCEDURE create_file IS
    xmldoc xmldom.DOMDocument;
    root_node xmldom.domnode;
    xml_doctype xmldom.DOMDocumentType;
    root_element xmldom.domelement;
    record_element xmldom.domelement;
    record_node xmldom.domnode;
    parent_node xmldom.domnode;
    child_node xmldom.domnode;
    newelenode xmldom.DOMNode;
    textele xmldom.DOMText;
    compnode xmldom.DOMNode;
    BEGIN
    xmldoc := xmldom.newDOMDocument;
    xmldom.setVersion(xmldoc, '1.0');
    create_file_with_root(xmldoc, 'root', root_element, root_node, 'test.dtd');
    xmldom.setAttribute(root_element, 'interface_type', 'EXCHANGE_RATES');
    -- Create the record element in the file --
    create_element_and_append(xmldoc, 'record', root_node, record_element, record_node);
    parent_node := create_text_element(xmldoc, 'title', 'Mr', record_node);
    parent_node := create_text_element(xmldoc, 'name', 'Joe', record_node);
    parent_node := create_text_element(xmldoc,'surname', 'Blogs', record_node);
    -- Create the record element in the file --
    create_element_and_append(xmldoc, 'record', root_node, record_element, record_node);
    parent_node := create_text_element(xmldoc, 'title', 'Mrs', record_node);
    parent_node := create_text_element(xmldoc, 'name', 'A', record_node);
    parent_node := create_text_element(xmldoc, 'surname', 'B', record_node);
    -- write the newly created dom document into the buffer assuming it is less than 32K
    xmldom.writeTofile(xmldoc, 'c:\laiki\willow_data\test.xml');
    EXCEPTION
    WHEN xmldom.INDEX_SIZE_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Index Size error');
    WHEN xmldom.DOMSTRING_SIZE_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'String Size error');
    WHEN xmldom.HIERARCHY_REQUEST_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Hierarchy request error');
    WHEN xmldom.WRONG_DOCUMENT_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Wrong doc error');
    WHEN xmldom.INVALID_CHARACTER_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Invalid Char error');
    WHEN xmldom.NO_DATA_ALLOWED_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Nod data allowed error');
    WHEN xmldom.NO_MODIFICATION_ALLOWED_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'No mod allowed error');
    WHEN xmldom.NOT_FOUND_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Not found error');
    WHEN xmldom.NOT_SUPPORTED_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Not supported error');
    WHEN xmldom.INUSE_ATTRIBUTE_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'In use attr error');
    WHEN OTHERS THEN
    dbms_output.put_line('exception occured' || SQLCODE || SUBSTR(SQLERRM, 1, 100));
    END create_file;

Maybe you are looking for

  • Single account on imac can see but cannot connect over network

    This one is driving me crazy: As of this morning I cannot connect to other computers in our network. Using other accounts on the same imac is no problem, but mine simply refuses. I can see the rest of the network, connect to the internet, print, etc.

  • Can't Boot Ubuntu LiveCd or Windows XP SP2 CD

    I just got a replcament MacPro. My first defective Macpro had a defective Graphics Card but it did come with the Sony DVD Drives. My replacement MacPro came with the Pioneer DVD drives (but the Graphics card works). My original Mac Pro could boot a U

  • Music not showing up in purchased section

    Hey there, I bought several song a couple of weeks ago. They used to show up in purchased song section in the music app, but now they dont and the album artworks seem to be gone. how can I fix this is really annoying.

  • Problem with xdm

    Since the last update of xorg, etc, I have the message: "This is an insecured session" in place of where my host name once was, any ideas as to how do I fix this?

  • Website vs Image Quality

    Hi all, I all i am a complete n00b at flash so this will probably a very simple question lol I am currently making a webstie from a template i bought from templatemonster, I have edited it fine but i am having issues with the image and website qualit