Oracle and XMLType

Hi,
I have stored a instance of XMLDocument on my Oracle db.
I have used XMLType object (oracle.xml.parser.v2) to take it value.
XmlType Xml = XMLType.createXML(orset.getOPAQUE("Policy"));
So, I cast value to create a XMLDOM document
Document XmlDoc = (Document) Xml.getDOM();
But when I try to access XMLDOM this value occured :
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0xF532F2E
Function=qmxPrintXobToStreamWithPfx+0x2E
Library=C:\oracle\ora92\bin\orageneric9.dll
Current Java thread:
     at oracle.xdb.dom.XDBNode.toStringNative(Native Method)
     - locked <02A20FF0> (a oracle.xdb.dom.XDBElement)
     at oracle.xdb.dom.XDBNode.toString(XDBNode.java:510)
     at java.lang.String.valueOf(String.java:2177)
     at java.io.PrintStream.print(PrintStream.java:462)
     at firstimpl.FirstImpl.NodeRules(FirstImpl.java:338)
     at firstimpl.FirstImpl.NodeRegistration(FirstImpl.java:380)
     at firstimpl.FirstImpl.<init>(FirstImpl.java:127)
     at firstimpl.FirstImpl.main(FirstImpl.java:1307)
Thanks in advance,
Omar

Looks like a bug in orageneric9.dll
You should search Oracle's bug listings and patches.

Similar Messages

  • Trying to get UTF-8 data in and out of an oracle.xdb.XMLType

    I need to be able to put unicode text into an oracle.xdb.XMLType and
    then get it back out. I'm so close but it's still not quite working.
    Here's what I'm doing...
    // create a string with one unicode character (horizontalelipsis)
    String xmlString = new String(
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
    "<utf8>\n" +
    " <he val=\"8230\">\u2026</he>\n" +
    "</utf8>\n");
    // this is an oci8 connection
    Connection conn = getconnection();
    // this works with no exceptions
    XMLType xmlType = XMLType.createXML(conn, xmlString);
    // this is the problem here - BLOB b does not contain all the bytes
    // from xmlType. It seems to be short 2 bytes.
    BLOB b = xmlType.getBlobVal(871);
    String xmlTypeString = new String(b.getBytes(1L, (int) b.length()), "UTF-8");
    PrintStream out = new PrintStream(System.out, true, "UTF-8");
    out.print(xmlTypeString);
    out.close();
    What I get from this is this...
    <?xml version="1.0" encoding="UTF-8"?>
    <utf8>
    <he val="8230">[utf-8 bytes]</he>
    </utf8
    In the above, [utf-8 bytes] represents the correctly encoded UTF-8 bytes that
    were returned. But the output is missing the final closing bracket and the
    newline at the end. It seems that no matter what second argument I give b.getBytes(),
    it always returns the above. Even
    It seems that this code...
    BLOB b = xmlType.getBlobVal(871);
    always returns a BLOB that contains a few bytes short of what it should contain.
    What am I doint wrong? I'm sure I'm missing something here.
    Thanks much for your help.
    Here's info about the environment I'm working in.
    ============================ SYSTEM INFORMATION ============================
    SQL*Plus: Release 11.1.0.7.0 - Production on Fri May 15 11:54:34 2009
    select * from nls_database_parameters
    where parameter='NLS_CHARACTERSET'
    returns...
    WE8ISO8859P1
    select * from nls_database_parameters
    where parameter='NLS_NCHAR_CHARACTERSET'
    returns...
    AL16UTF16
    The operating system I'm working with is...
    SunOS hostname 5.10 Generic_120011-14 sun4u sparc SUNW,Netra-T12

    WE8ISO8859P1 does not support the ellipsis character. It is a WE8MSWIN1252 character. I wonder if your problem may have something to do with internal conversion to/from XML character reference (&#x2026). Unfortunately, I have no time to test. Please, try to use a simple loop and System.out.print to print all bytes of the return value of b.getBytes(1L, (int) b.length()). Also, check the value of b.length().
    -- Sergiusz

  • Error Missing class: oracle.xdb.XMLType with xdb.jar in JDeveloper 10.1.3

    I am using JDeveloper 10.1.3 and get the following error when executing the web service proxy with my call to the web service( this web service is using class OracleXMLSave with method insertXML):
    I have included the xdb.jar in my project properties libraries of the web service project and added a file group with xdb.jar to the properties of the webservices.deploy. What else needs to be done? This worked in JDeveloper 10.1.2.
    THE ERROR after running proxy in log window:
    java.rmi.ServerException:
    start fault message:
    caught exception while handling request: caught exception while handling request: oracle.classloader.util.AnnotatedNoClassDefFoundError:
         Missing class: oracle.xdb.XMLType
         Dependent class: dbdata2package.DBDataOperations
         Loader: DBData2WSApp-DBData2Operations-WS.web.WebServices:0.0.0
         Code-Source: /D:/h/cots/Oracle/JDeveloper10g10.1.3/j2ee/home/applications/DBData2WSApp-DBData2Operations-WS/WebServices/WEB-INF/classes/
         Configuration: WEB-INF/classes/ in D:\h\cots\Oracle\JDeveloper10g10.1.3\j2ee\home\applications\DBData2WSApp-DBData2Operations-WS\WebServices\WEB-INF\classes
    The missing class is available from the following locations:
         1. Code-Source: /D:/h/cots/Oracle/JDeveloper10g10.1.3/j2ee/home/applications/DBDataWSApp-webservice-WS/WebServices/WEB-INF/lib/xdb.jar (from WEB-INF/lib/ directory in D:\h\cots\Oracle\JDeveloper10g10.1.3\j2ee\home\applications\DBDataWSApp-webservice-WS\WebServices\WEB-INF\lib)
         This code-source is available in loader DBDataWSApp-webservice-WS.web.WebServices:0.0.0.
         2. Code-Source: /D:/h/cots/Oracle/JDeveloper10g10.1.3/j2ee/home/applications/DBDataWSApp-DBDataOperations-WS/WebServices/WEB-INF/lib/xdb.jar (from WEB-INF/lib/ directory in D:\h\cots\Oracle\JDeveloper10g10.1.3\j2ee\home\applications\DBDataWSApp-DBDataOperations-WS\WebServices\WEB-INF\lib)
         This code-source is available in loader DBDataWSApp-DBDataOperations-WS.web.WebServices:0.0.0.
    :end fault message
         at oracle.j2ee.ws.client.StreamingSender._raiseFault(StreamingSender.java:545)
         at oracle.j2ee.ws.client.StreamingSender._sendImpl(StreamingSender.java:390)
         at oracle.j2ee.ws.client.StreamingSender._send(StreamingSender.java:111)
         at dbdata2packageproxy.runtime.DBData2WSSoapHttp_Stub.insertData(DBData2WSSoapHttp_Stub.java:80)
         at dbdata2package.DBData2WSSoapHttpPortClient.insertData(DBData2WSSoapHttpPortClient.java:54)
         at dbdata2package.DBData2WSSoapHttpPortClient.main(DBData2WSSoapHttpPortClient.java:34)
    Process exited with exit code 0.

    Hi,
    actually you increment the index
    pstmt.setString(++idx,inrecord.getCommentID());
    which means you never have an index of 0 but always start with 1
    Frank

  • How do I get unicode characters out of an oracle.xdb.XMLType in Java?

    The subject says it all. Something that should be simple and error free. Here's the code...
    String xml = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<x>\u2026</x>\n");
    XMLType xmlType = new XMLType(conn, xml);
    conn is an oci8 connection.
    How do I get the original string back out of xmlType? I've tried xmlType.getClobVal() and xmlType.getString() but these change my \u2026 to 191 (question mark). I've tried xmlType.getBlobVal(CharacterSet.UNICODE_2_CHARSET).getBytes() (and substituted CharacterSet.UNICODE_2_CHARSET with a number of different CharacterSet values), but while the unicode characters are encoded correctly the blob returned has two bytes cut off the end for every unicode character contained in the original string.
    I just need one method that actually works.
    I'm using Oracle release 11.1.0.7.0. I'd mention NLS_LANG and file.encoding, but I'm setting the PrintStream I'm using for output explicitly to UTF-8 so these shouldn't, I think, have any bearing on the question.
    Thanks for your time.
    Stryder, aka Ralph

    I created analogic test case, and executed it with DB 11.1.0.7 (Linux x86), which seems to work fine.
    Please refer to the execution procedure below:
    * I used AL32UTF8 database.
    1. Create simple test case by executing the following SQL script from SQL*Plus:
    connect / as sysdba
    create user testxml identified by testxml;
    grant connect, resource to testxml;
    connect testxml/testxml
    create table testtab (xml xmltype) ;
    insert into testtab values (xmltype('<?xml version="1.0" encoding="UTF-8"?>'||chr(10)||'<x>'||unistr('\2026')||'</x>'||chr(10)));
    -- chr(10) is a linefeed code.
    commit;
    2. Create QueryXMLType.java as follows:
    import java.sql.*;
    import oracle.sql.*;
    import oracle.jdbc.*;
    import oracle.xdb.XMLType;
    import java.util.*;
    public class QueryXMLType
         public static void main(String[] args) throws Exception, SQLException
              DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
              OracleConnection conn = (OracleConnection) DriverManager.getConnection("jdbc:oracle:oci8:@localhost:1521:orcl", "testxml", "testxml");
              OraclePreparedStatement stmt = (OraclePreparedStatement)conn.prepareStatement("select xml from testtab");
              ResultSet rs = stmt.executeQuery();
              OracleResultSet orset = (OracleResultSet) rs;
              while (rs.next())
                   XMLType xml = XMLType.createXML(orset.getOPAQUE(1));
                   System.out.println(xml.getStringVal());
              rs.close();
              stmt.close();
    3. Compile QueryXMLType.java and execute QueryXMLType.class as follows:
    export PATH=$ORACLE_HOME/jdk/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export CLASSPATH=.:$ORACLE_HOME/jdbc/lib/ojdbc5.jar:$ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/rdbms/jlib/xdb.jar:$ORACLE_HOME/lib/xmlparserv2.jar
    javac QueryXMLType.java
    java QueryXMLType
    -> Then you will see U+2026 character (horizontal ellipsis) is properly output.
    My Java code came from "Oracle XML DB Developer's Guide 11g Release 1 (11.1) Part Number B28369-04" with some modification of:
    - Example 14-1 XMLType Java: Using JDBC to Query an XMLType Table
    http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb11jav.htm#i1033914
    and
    - Example 18-23 Using XQuery with JDBC
    http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm#CBAEEJDE

  • Query Oracle 9i xmltype tables

    Hi,
    I have created a table of xmltype and loaded a large xml document of size ~47 MB.
    I wish to execute the following query on the table(OracleBench_No_Schema) using Oracle thin driver.
    select extract(value(X), '//eNest[@aSixtyFour=2]')
    from OracleBench_No_Schema X;
    can you provide me with a skeleton code for running such queries using a java program?
    thanks in advance.
    Dayal

    Hi ,
    java version 1.4.2
    I am using oracle jdbc drivers for java 1.4
    I am using the thin driver.
    This is the code that I am currently using...
    import java.util.Iterator;
    import org.w3c.dom.Node;
    import java.sql.*;
    import java.io.*;
    import oracle.xquery.*;
    import oracle.xquery.exec.*;
    import oracle.xml.parser.v2.*;
    import oracle.xdb.XMLType;
    import oracle.sql.OPAQUE;
    import oracle.xdb.XMLType;
    import oracle.jdbc.pool.OracleDataSource;
    import oracle.jdbc.OraclePreparedStatement;
    import oracle.jdbc.OracleResultSet;
    public class OracleXMLTypeQuery
    public static void main(String[]args)
    String query = "select extract(value(X), '//eNest[@aSixtyFour=2]').getClobVal() \n" +
    "from OracleBench_No_Schema X";
    try
         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@138.87.169.78:1521:itkora2","dmuruku","dmuruku");
    OraclePreparedStatement stmt = (OraclePreparedStatement) conn.prepareStatement(query);
    System.out.println("Executing Query...");
    OracleResultSet orset = (OracleResultSet)stmt.executeQuery();
              System.out.println("Query Executed....");
    while(orset.next())
    oracle.sql.CLOB clob = orset.getCLOB(1);               
         Reader reader = clob.getCharacterStream();
    //----------------These set of lines when included in the program are causing protocol violation---------
    StringBuffer clobBuffer = new StringBuffer();
                   char[] buffer = new char[1024];
                   int readCount;
                        while ( (readCount = reader.read(buffer)) != -1)
                             {        clobBuffer.append(buffer, 0, readCount);    }
                   //This included...protocol violation          
    conn.close();
    catch(Exception ex)
    System.out.println(ex.toString());
    As I mentioned the lines of code between the two commenting lines when Included in the program are causing a protocol violation.
    (java.io.IOException: Protocol Violation).
    Is there any other way to read data from a Reader Object into a file or to display it on the console output?
    please advise
    Thanks
    DL

  • Oracle.xdb.XMLType extract function

    I have an external java program that connect to the database using a thick connection so I can use the methods extract and existsNode available with the XMLType from oracle.xdb.XMLType.
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    conn = DriverManager.getConnection(jdbc:oracle:oci8:@,"user","pwd");
    It works fine from the program. When I load the java function in the SQL database I use the default connection
    conn = DriverManager.getConnection("jdbc:default:connection:");
    and the extract function gives the error java.sql.SQLException.
    Is there a way to define the native connection as thin or thick because that was the error I was getting from the client program when I was using thin connection
    Thanks
    Mirette

    Please try and avoid duplicate posts...

  • Class oracle.sql.OPAQUE not found in class oracle.xdb.XMLType

    I have the following code written in java in a unix box and this is the error I get when compiling the code. I am not able to find which specific jar or class file I need, Kindly help.
    XMLHelper.java:0: Class oracle.sql.OPAQUE not found in class oracle.xdb.XMLType.
    ^
    1 error
    OracleResultSet orst = .... some code to get data
    orst.next();
    //either of the following 2 lines give the same error
    //XMLType dXml = XMLType.createXML(orst.getOPAQUE(1)) ;
    XMLType dXml = (XMLType)orst.getObject(i);
    xmlDoc = dXml.getDOM();
    Please help

    Hello,
    from the little information in your post i would say try to import oracle.sql.*, oracle.jdbc.* and oracle.xdb.*. Make sure your project can access the following libraries ojdbc14.jar and xdb.jar.
    Regards, Marc

  • Slow to convert Oracle 11g XMLType into Java String or Document

    After retrieving a result set from an Oracle 11g database, it takes roughly 75 seconds to convert the XMLType (this is a structured XML Storage, registered with an xsd) into either a java String or Document. I'm using Java 1.6, have the xdb.jar and xmlparserv2.jar
    This xsd is <100 lines and the xml document is also <100 lines.
    Sample code:
    oracle.xdb.XMLType xml = oracle.xdb.XMLType.createXML((oracle.sql.OPAQUE)rset.getObject("XMLDATA"));
    the other way, but still took just as long:
    XMLType xml = (XMLType)rset.getObject("XMLDATA");
    xml.getStringVal();
    or
    org.w3c.dom.Document doc = xml.getDocument();
    either way of the above ways takes just as long.

    If I put this value into the database table, I can
    see only the date. Time part is missing. Is this the
    problem with java.sql.Date or Oracle datatype Date?This is not a problem, this is the defined behaviour of the Date type. RTFAPI and have a look at Timestamp, while you're at it.

  • XSQL Error. Missing class: oracle.xdb.XMLType XML

    I am using OC4J and XSQL to publish information and most of the normal stuff runs fine. When I try to run the following query, I get errors. I copied the following example from XML developer's kit manual and work fine in SQL*Plus.
    =============================
    <?xml version="1.0"?>
    <xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql">
    select XmlElement("DepartmentList",
    XmlAgg(
    XmlElement("Department",
    XmlAttributes(deptno as "Id"),
    XmlForest(dname as "Name"),
    (select XmlElement("Employees",
    XmlAgg(
    XmlElement("Employee",
    XmlAttributes(empno as "Id"),
    XmlForest(ename as "Name",
    sal as "Salary",
    job as "Job")
    from emp e
    where e.deptno = d.deptno
    ) as result
    from dept d
    order by dname
    </xsql:query>
    ====================
    Following is the header portion of the errors shown.
    XML-25017: Unexpected Error Occurred
    oracle.classloader.util.AnnotatedNoClassDefFoundError:
    Missing class: oracle.xdb.XMLType
    Dependent class: oracle.xml.sql.core.OracleXMLConvert
    Loader: oracle.xml:10.1.0_2
    Code-Source: /C:/oracle/oc4j_1013/lib/xsu12.jar
    Configuration: <code-source> (ignore manifest Class-Path) in META-INF/boot.xml in C:\oracle\oc4j_1013\j2ee\home\oc4j.jar
    The missing class is available from the following locations:
    1. Code-Source: /C:/oracle/oc4j_1013/j2ee/home/applications/xsql/xsql/WEB-INF/lib/xdb.jar (from WEB-INF/lib/ directory in C:\oracle\oc4j_1013\j2ee\home\applications\xsql\xsql\WEB-INF\lib)
    This code-source is available in loader xsql.web.xsql:0.0.0.
    I tried to search several forums but was unable to find any solution to resolve this issue. Any help is appreciated.
    Thanks,

    I am using OC4J and XSQL to publish information and most of the normal stuff runs fine. When I try to run the following query, I get errors. I copied the following example from XML developer's kit manual and work fine in SQL*Plus.
    =============================
    <?xml version="1.0"?>
    <xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql">
    select XmlElement("DepartmentList",
    XmlAgg(
    XmlElement("Department",
    XmlAttributes(deptno as "Id"),
    XmlForest(dname as "Name"),
    (select XmlElement("Employees",
    XmlAgg(
    XmlElement("Employee",
    XmlAttributes(empno as "Id"),
    XmlForest(ename as "Name",
    sal as "Salary",
    job as "Job")
    from emp e
    where e.deptno = d.deptno
    ) as result
    from dept d
    order by dname
    </xsql:query>
    ====================
    Following is the header portion of the errors shown.
    XML-25017: Unexpected Error Occurred
    oracle.classloader.util.AnnotatedNoClassDefFoundError:
    Missing class: oracle.xdb.XMLType
    Dependent class: oracle.xml.sql.core.OracleXMLConvert
    Loader: oracle.xml:10.1.0_2
    Code-Source: /C:/oracle/oc4j_1013/lib/xsu12.jar
    Configuration: <code-source> (ignore manifest Class-Path) in META-INF/boot.xml in C:\oracle\oc4j_1013\j2ee\home\oc4j.jar
    The missing class is available from the following locations:
    1. Code-Source: /C:/oracle/oc4j_1013/j2ee/home/applications/xsql/xsql/WEB-INF/lib/xdb.jar (from WEB-INF/lib/ directory in C:\oracle\oc4j_1013\j2ee\home\applications\xsql\xsql\WEB-INF\lib)
    This code-source is available in loader xsql.web.xsql:0.0.0.
    I tried to search several forums but was unable to find any solution to resolve this issue. Any help is appreciated.
    Thanks,

  • REF and xmltype

    Hi,
    I cannot find a sample to user REF and xmltype in oracle docs.
    I want to create a resource (in a folder in xmldb resource) using dbms_xdb.createresource with a REF xmltype.
    Could you help me,
    Regards,
    Olivier

    From the XML DB standard demo
    declare
      cursor getDepartments is
        select ref(d) XMLREF,
               XMLCast( XMLQUery ( '$d/Department/Name' passing object_value as "d" returning content) as VARCHAR2(32) ) NAME
          from DEPARTMENT_XML d;
      res boolean;
      targetFolder varchar2(1024) :=  '/home/SCOTT/Departments';
    begin
      if dbms_xdb.existsResource(targetFolder) then
         dbms_xdb.deleteResource(targetFolder,dbms_xdb.DELETE_RECURSIVE);
      end if;
      res := dbms_xdb.createFolder(targetFolder);
      for dept in getDepartments loop
        res := DBMS_XDB.createResource(targetFolder || '/' || dept.NAME || '.xml', dept.XMLREF);
      end loop;
    end;
    select path
      from path_view
    where under_path(RES,'/home/SCOTT/Departments') = 1
    /

  • What is the difference between Oracle and MySQL

    Hi,
    I would like to know the major difference between Oracle and MySQL. I have a project to generate XML files from database tables, i have used oracle's built XML functions XMLELEMENT, XMLATTRIBUTES, XMLFOREST, XMLAGG. I really want to know if these functions (or) similar functions are supported/availabe in MySQL.
    I am having a hard time to find out best linux distro for installing Oracle11g, so i am planning to switch to MySQL. Please help, Thanks in advance.

    Oracle_Walker wrote:
    Hi,
    <snip>>
    I am having a hard time to find out best linux distro for installing Oracle11g, Then you must be "looking for love in all the wrong places."
    What's so hard about finding a "best linux distro for installing Oracle11g"? The supported distros are listed in the fine Installation Guide for Linux. At the top of the list is Oracle's own Oracle Linux, which is in the same family as Red Hat.
    so i am planning to switch to MySQL. Please help, Thanks in advance.

  • Oracle and empty strings

    Hi All,
    i'm porting my application to Oracle and i'm experiencing (big) issues since empty strings are treated as null by Oracle.
    This is a big issue for me since my application uses empty and null values as two different things (indeed they are different !!), ie, i'm not having null pointer exception, but wrong behavior.
    I'm thinking what's the best approach to follow since my appl. must work also on mysql and postgres.
    Three options at the moment:
    1. implement a jdbc wrapper that converts any empty string in something like '~'.
    2. using aspectj, add some aspects to setString/getString converting any empty string in something like '~'.
    3. buy a commercial driver that makes difference between empty and null (using aforementioned approaches ?).
    I think that this difference in Oracle is really an impediment in doing applications db neutral and I'd like to ask your opinion about the best solution (if someone already resolved it as i guess).
    Does anyone know if there are commercial jdbc driver that can help me ?
    Does anyone know how ORM frameworks (like hibernate) handle this case ?
    Thanks in advance
    ste

    jschell wrote:
    nichele wrote:
    jwenting wrote:
    If NULL really is different in your context from an empty string you're going to have to define some sequence of characters as indicating an empty string.yes, this is what i need to implement.Sounds like a flawed design then.
    I'm wondering what's the best approach in order to avoid to change all my application isolating this behavior somewhere (wrapping the jdbc driver for instance).That doesn't make much sense to me. You should already have a database layer. You change the database layer. If you don't have a database layer then that means you have another design flaw. And in that case I would really not be the one that needs to maintain that code base.I thought a bit about the value of your answer...but i didn't find it ....sorry but i don't like who replies on forum just to say bad design/bad choice etc...if you have any kind of suggestion you are welcome, otherwise you can spend your time in doing something else instead of reply to this thread.

  • Question regarding Oracle and Linux on VMware

    Hello,
    I carefuly read the paper on Oracle and Linux on Your Own VMware and I'm missing a point.
    The paper explains how to start a cluster on a single host in a single Linux VM on VMware.
    So, there are 2 instances of Oracle 10g DB on the same Linux VM inside VMware. What does allow that?
    Is it possible to run 2 instances on any (single) Linux box, or is VMware required? If VMware is not required, why this complication in that paper? If VMware is required, what does it bring that make running 2 cluster instances on the same host possible?
    Many thanks for your help.

    userLynx wrote:
    I have an oracle database (10.2) and I have a query that needs to compare data on the Oracle database to data on a MS SQL server DB. I'm using a DB Link between the two databases.
    How would I compare the date fields?
    I have a table that has a date as one of the fields and I need to restrict the records where the date is equal to the date on SQL, however the formats are different:
    My query is as follows:
    SELECT mkt_css_name,
    pmv_rqst_corp_id,
    pmv_rqst_source,
    'G',
    pmv_css_acct_no,
    eq.start_date
    FROM power_move@cmdt,
    enroll_que@tcis eq,
    marketer@cmdt
    WHERE eq.css_account_number = pmv_css_acct_no
    AND eq.requestor_type = 'P'
    AND eq.status IN ('A','P','G','S')
    AND eq.marketer_id = mkt_seq_no
    AND pmv_service_type IN ('G','D')
    And Pmv_Gas_Mktr_No = Eq.Marketer_Id
    AND pmv_received_timestamp= eq.enroll_date ;
    The problem is that the date is stored in Oracle in the following format: DD-MON-YYYY and in SQL as 'YYYY-DD-MM HH:MI:SSSSSS'
    for example: Data in Oracle would be 27-JAN-2012 and in SQL as 2012-01-27 00:00:00.000
    I get an error when I compile.
    How do you reconcile the formats when the syntax is different between databases?
    Thanks, SeanDATE datatypes do NOT have any "format"
    DATE datatype is stored in internal binary notation.
    use TO_CHAR to display, present & compare the DATE datatypes

  • How do I set miminum # of connections for pool with Oracle and Tomcat?

    Hi,
    I can't seem to find any attribute to initialize the number of connections for my connection pool. Here is my current context.xml file under my /App1 directory:
    <Context path="/App1" docBase="App1"
    debug="5" reloadable="true" crossContext="true">
    <Resource name="App1ConnectionPool" auth="Container"
    type="oracle.jdbc.pool.OracleDataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:oddjob"
    user="app1" password="app1" />
    </Context>
    I've been googling and reading forums, but haven't found a way to establish the minimum number of connections. I've tried all sorts of parameters like InitialLimit, MinLimit, MinActive, etc, with no success.
    Here is some sample code that I am testing:
    package web;
    import oracle.jdbc.pool.OracleDataSource;
    import oracle.jdbc.OracleConnection;
    import javax.naming.*;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;
    public class ConnectionPool {
    String message = "Not Connected";
    public void init() {
    OracleConnection conn = null;
    ResultSet rst = null;
    Statement stmt = null;
    try {
    Context initContext = new InitialContext();
    Context envContext = (Context) initContext.lookup("java:/comp/env");
    OracleDataSource ds = (OracleDataSource) envContext.lookup("App1ConnectionPool");
    message = "Here.";
         String user = ds.getUser();
    if (envContext == null)
    throw new Exception("Error: No Context");
    if (ds == null)
    throw new Exception("Error: No DataSource");
    if (ds != null) {
    message = "Trying to connect...";
    conn = (OracleConnection) ds.getConnection();
    Properties prop = new Properties();
    prop.put("PROXY_USER_NAME", "adavey/xxx");
    if (conn != null) {
    message = "Got Connection " + conn.toString() + ", ";
              conn.openProxySession(OracleConnection.PROXYTYPE_USER_NAME,prop);
    stmt = conn.createStatement();
    rst = stmt.executeQuery("SELECT username, server from v$session where username is not null");
    while (rst.next()) {
    message = "DS User: " + user + "; DB User: " + rst.getString(1) + "; Server: " + rst.getString(2);
    rst.close();
    rst = null;
    stmt.close();
    stmt = null;
    conn.close(); // Return to connection pool
    conn = null; // Make sure we don't close it twice
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    // Always make sure result sets and statements are closed,
    // and the connection is returned to the pool
    if (rst != null) {
    try {
    rst.close();
    } catch (SQLException e) {
    rst = null;
    if (stmt != null) {
    try {
    stmt.close();
    } catch (SQLException e) {
    stmt = null;
    if (conn != null) {
    try {
    conn.close();
    } catch (SQLException e) {
    conn = null;
    public String getMessage() {
    return message;
    I'm using a utility to repeatedly call a JSP page that uses this class and displays the message variable. This utility allows me to specify the number of concurrent web requests and an overall number of requests to try. While that is running, I look at V$SESSION in Oracle and occassionaly, I will see a brief entry for app1 or adavey depending on the timing of my query and how far along the code has processed in this example. So it seems that I am only using one connection at a time and not a true connection pool.
    Is it possible that I need to use the oci driver instead of the thin driver? I've looked at the javadoc for oci and the OCIConnectionPool has a setPoolConfig method to set initial, min and max connections. However, it appears that this can only be set via Java code and not as a parameter in my context.xml resource file. If I have to set it each time I get a database connection, it seems like it sort of defeats the purpose of having Tomcat maintain the connection pool for me and that I need to implement my own connection pool. I'm a newbie to this technology so I really don't want to go this route.
    Any advice on setting up a proper connection pool that works with Tomcat and Oracle proxy sessions would be greatly appreciated.
    Thanks,
    Alan

    Well I did some more experiments and I am able to at least create a connection pool within my example code:
    package web;
    import oracle.jdbc.pool.OracleDataSource;
    import oracle.jdbc.OracleConnection;
    import javax.naming.*;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;
    public class ConnectionPool {
    String message = "Not Connected";
    public void init() {
    OracleConnection conn = null;
    ResultSet rst = null;
    Statement stmt = null;
    try {
    Context initContext = new InitialContext();
    Context envContext = (Context) initContext.lookup("java:/comp/env");
    OracleDataSource ds = (OracleDataSource) envContext.lookup("App1ConnectionPool");
    message = "Here.";
         String user = ds.getUser();
    if (envContext == null)
    throw new Exception("Error: No Context");
    if (ds == null)
    throw new Exception("Error: No DataSource");
    if (ds != null) {
    message = "Trying to connect...";
    boolean cache_enabled = ds.getConnectionCachingEnabled();
    if (!cache_enabled){
    ds.setConnectionCachingEnabled(true);
    Properties cacheProps = new Properties();
    cacheProps.put("InitialLimit","5");
         cacheProps.put("MinLimit","5");
    cacheProps.put("MaxLimit","10");
    ds.setConnectionCacheProperties(cacheProps);
              conn = (OracleConnection) ds.getConnection();
    Properties prop = new Properties();
    prop.put("PROXY_USER_NAME", "adavey/xyz");
    if (conn != null) {
    message = "Got Connection " + conn.toString() + ", ";
              conn.openProxySession(OracleConnection.PROXYTYPE_USER_NAME,prop);
    stmt = conn.createStatement();
    //rst = stmt.executeQuery("SELECT 'Success obtaining connection' FROM DUAL");
    rst = stmt.executeQuery("SELECT user, SYS_CONTEXT ('USERENV', 'SESSION_USER') from dual");
    while (rst.next()) {
    message = "DS User: " + user + "; DB User: " + rst.getString(1) + "; sys_context: " + rst.getString(2);
    message += "; Was cache enabled?: " + cache_enabled;
    rst.close();
    rst = null;
    stmt.close();
    stmt = null;
    conn.close(OracleConnection.PROXY_SESSION); // Return to connection pool
    conn = null; // Make sure we don't close it twice
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    // Always make sure result sets and statements are closed,
    // and the connection is returned to the pool
    if (rst != null) {
    try {
    rst.close();
    } catch (SQLException e) {
    rst = null;
    if (stmt != null) {
    try {
    stmt.close();
    } catch (SQLException e) {
    stmt = null;
    if (conn != null) {
    try {
    conn.close();
    } catch (SQLException e) {
    conn = null;
    public String getMessage() {
    return message;
    In my context.xml file, I tried to specify the same Connection Cache Properties as attributes, but no luck:
    <Context path="/App1" docBase="App1"
    debug="5" reloadable="true" crossContext="true">
    <Resource name="App1ConnectionPool" auth="Container"
    type="oracle.jdbc.pool.OracleDataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:oddjob"
    user="app1" password="app1"
    ConnectionCachingEnabled="1" MinLimit="5" MaxLimit="20"/>
    </Context>
    These attributes seemed to have no effect:
    ConnectionCachingEnabled="1" ; also tried "true"
    MinLimit="5"
    MaxLimit="20"
    So basically if I could find some way to get these attributes set within the context.xml file instead of my code, I would be a happy developer :-)
    Oh well, it's almost Miller time here on the east coast. Maybe a few beers will help me find the solution I'm looking for.

  • I am new to using Oracle, and I am trying to create an add/insert stored pr

    I am new to using Oracle, and I am trying to create an add/insert stored procedure for a table. The PROD_CD and PLAN_CD fields in my table can have no value (empty or null) Can you please check my code and let me know what I am doing wrong?
    Table definition:
    CREATE TABLE DCWEB.USER_PLAN_PREFERENCE
    USERID VARCHAR2(40) NOT NULL,
    PROD_CD VARCHAR2(9) NULL,
    PLAN_CD VARCHAR2(9) NULL,
    STATE_LST VARCHAR2(2) NOT NULL,
    STATE_NM VARCHAR2(40) NOT NULL,
    LST_UPDATE_TS TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL
    ALTER TABLE DCWEB.USER_PLAN_PREFERENCE
    ADD CONSTRAINT USER_PLAN_PREFERENCE_XPK PRIMARY KEY (USERID, PROD_CD, PLAN_CD);
    -- Grant/Revoke object privileges
    grant select, insert, update, delete on DCWEB.USER_PLAN_PREFERENCE to HIGGIB1;
    Stored Procedure Definition:
    procedure setUserPlanPref (
    userid in varchar2,
    prod_cd in varchar2,
    plan_cd in varchar2,
    state_lst in varchar2,
    state_nm in varchar2
    is
    currentTimestamp timestamp := current_timestamp;
    begin
    insert into user_plan_preference (userid, prod_cd, plan_cd, state_lst, state_nm, lst_update_ts)
    values (upper(userid), upper(prod_cd), upper(plan_cd), upper(state_lst), upper(state_nm), currentTimestamp);
    commit;
    exception
    when dup_val_on_index then
    begin
    update user_plan_preference up set
    up.userid = upper(userid),
    up.prod_cd = upper(prod_cd),
    up.plan_cd = upper(plan_cd),
    up.state_lst = upper(state_lst),
    up.state_nm = upper(state_nm),
    up.lst_update_ts = currentTimestamp
    where up.userid = upper(userid)
    and up.prod_cd = upper(prod_cd)
    and up.plan_cd = upper(plan_cd);
    commit;
    exception
    when others then
    rollback;
    end;
    when others then
    rollback;
    end;
    end;
    INPUT DATA
    I am unable to insert a record calling the stored procedure with values: DCWEB4578, , 2P, CA, CALIFORNIA but when I change to the string "NULL", the insert succeeds. When I try to call the stored procedure to update the inserted record with values: DCWEB4578, "NULL", 2P, CO, COLORODO the update does not happen since I still see the original record in the table. Please advise. Thanks in advance for your help.

    938319 wrote:
    I am new to using OracleWelcome to the forum: please read the FAQ and forum sticky threads (if you haven't done so already), and ensure you've updated your profile with a real handle instead of "938319".
    You'll get a faster, more effective response to your questions by including as much relevant information as possible upfront. This should include:
    <li>Full APEX version
    <li>Full DB/version/edition/host OS
    <li>Web server architecture (EPG, OHS or APEX listener/host OS)
    <li>Browser(s) and version(s) used
    <li>Theme
    <li>Template(s)
    <li>Region/item type(s)
    With APEX we're fortunate to have a great resource in apex.oracle.com where we can reproduce and share problems. Reproducing things there is the best way to troubleshoot most issues, especially those relating to layout and visual formatting. If you expect a detailed answer then it's appropriate for you to take on a significant part of the effort by getting as far as possible with an example of the problem on apex.oracle.com before asking for assistance with specific issues, which we can then see at first hand.
    Thanks for posting the complete code, it makes it so much easier to understand the problem, but always post code wrapped in tags<tt>\...\</tt> tags to preserve formatting and special characters.
    and I am trying to create an add/insert stored procedure for a table.Does this have anything to do with APEX, for which this is the forum? General SQL &amp PL/SQL matters should be directed to the {forum:id=75} forum.
    The PROD_CD and PLAN_CD fields in my table can have no value (empty or null) Can you please check my code and let me know what I am doing wrong?This:
               commit;
    exception
    when others then
    rollback;
    end;
    when others then
    rollback;Remove it all.
    Commits should be issued by end user/client software on completion of a transaction. This means <tt>commit;</tt> should almost never appear in PL/SQL code. The main exception to this is in <tt>dbms_job/secheduler</tt> scheduled processes that have no client or UI. If this code is executed from APEX, then APEX issues more than enough commits anyway.
    exceptions are just a way of ensuring your code is buggy.<tt>when others</tt> exceptions are just a way of ensuring your code is buggy.
    INPUT DATA
    I am unable to insert a record calling the stored procedure with values: DCWEB4578, , 2P, CA, CALIFORNIA but when I change to the string "NULL", the insert succeeds. When I try to call the stored procedure to update the inserted record with values: DCWEB4578, "NULL", 2P, CO, COLORODO the update does not happen since I still see the original record in the table. Please advise. Thanks in advance for your help.With the <tt>commit</tt>s and <tt>when others...</tt> removed from the code you'll have a chance of seeing what's actually happening. Note that the entire procedure can be simplified by writing as a MERGE</tt> statement.

Maybe you are looking for