Entity Clob field with Oracle Generic Domain

Is it possible to use a Clob database column with an Entity Object, using Oracle Generic Domain, instead of Oracle Domain ? I know Oracle Domain has a ClobDomain object, but our application requires the usage of Oracle Generic domain, which does not have any clob object type.
Thanks a lot.
John.

If you have to use Oracle9i Database Release 2 (9.2.0), try CTX_DOC.IFILTER or CTX_DOC.FILTER.
CTX_DOC.IFILTER doesn't need CONTEXT index.
CTX_DOC.FILTER needs CONTEXT index, but it can be created with NOPOPULATE option.
If you use CTX_DOC.IFILTER, you should also check "Plain Text Indexing and the INSO_FILTER" in "Oracle Text Reference 9i Release 2".

Similar Messages

  • Inserting to a CLOB field in Oracle 8i  Database

    Hi All,
    I am trying to insert a value to a CLOB field in Oracle 8i DB.
    The value gets inserted when the size is less (Up to around 80 Bytes).
    When the size becomes larger the insertion does not take place but no exception is thrown.
    Please see below the code I have written.
    PreparedStatement preparedStatement = null;
              try {
                   connection = getConnection(MMAKeys.WMDS_DATASOURCE);
                   String query = "UPDATE s_mmhp_batch SET MMHP_REPORT_CLOB=(?) WHERE MMHP_BATCH_ID=(?) AND MMHP_USER_ID=(?) AND MMHP_MEMBER_KEY=(?)";
              preparedStatement=connection.prepareStatement(query);
              Reader r = new StringReader(clobReport);
              preparedStatement.setCharacterStream(1, r, clobReport.length());
              oracle.sql.CLOB newClob = oracle.sql.CLOB.createTemporary(connection , false, oracle.sql.CLOB.DURATION_CALL);
              newClob.putString(1,clobReport);
              preparedStatement.setClob(1,newClob);
              preparedStatement.setInt(2,batchId);
              preparedStatement.setString(3,userId);
              preparedStatement.setString(4,memberKey);
              preparedStatement.executeUpdate();
              System.out.println("inside the write to Batch method after executing the query");
              } catch (SQLException exception) {
                   throw new DAOException(
                        "MREDMMSDAO -> writeToTable():SQLException"
                             + exception.getMessage());
              } catch (Exception exception) {
                   throw new DAOException(
                        "MREDMMSDAO -> writeToTable():Exception"
                             + exception.getMessage());
              } finally {
                   closeStatement(preparedStatement);
                   closeConnection(connection);
    I came to know that this method is not supported in Oracle 8i.
    I tried to create an empty CLOB and call the putValue() method.
    But Then, I got an exception stating that the method is not supported.
    Is there any other way to insert a CLOB value to Oracle 8i?
    Please help.
    Thanks in advance,
    Neelambary

    And cursor.callproc('insert_clob_proc', (clob,))
    doesn't work for you?
    PrzemekYes - I should have been more clear in my original post. The callproc function works until we have a value which is over 32K. At values over 32K, we get an error message "ORA-01460: unimplemented or unreasonable conversion requested". I believe this is because we are sending the value as a string and so we would need to figure out how to send as a CLOB in cx_Oracle? Here is some code to use to test if interested...
    Oracle (Oracle Database 10g Release 10.1.0.4.0 - Production):
    CREATE TABLE clob_test (CLOB_FIELD CLOB);
    CREATE OR REPLACE PROCEDURE ins_clob_test (v_clob_field IN CLOB)
    AS
    BEGIN
    INSERT INTO clob_test (clob_field) VALUES (v_clob_field);
    END ins_clob_test;
    Python (2.5):
    conn = cx_Oracle.connect(xhash['oraclelogin'])
    cursor = conn.cursor()
    clob_var = 'Some test data' * 10000
    cursor.callproc('ins_clob_test',(clob_var,))
    conn.commit()
    cursor.close()
    conn.close()
    I should also mention that I am the Oracle developer and not the Python programmer - my knowledge of Python is very limited. I would like the Python programmers to use the procedures (packages) I have created to do their inserts but this situation has caused them to put the SQL directly in their code.
    Thanks again for any assistance you can provide.
    Jason

  • Problem with oracle.jbo.domain.Date

    Hi there,
    I've a problem with oracle.jbo.domain.Date,
    I'm doing this code (this part of code is used in my Session Attribute Listener):
    * This method is used to add the session id in the database, whenever user login
    public void attributeAdded(HttpSessionBindingEvent hsbe){
    if(!hsbe.getName().equals("user")){
    return;
    AmLogin am = (AmLogin)Configuration.createRootApplicationModule(
    "com.ahm.pdt001.am.AmLogin",
    "AmLoginLocal");
    try{
    hsbe.getSession().setAttribute("login", new Date(new Timestamp(
    System.currentTimeMillis())));
    am.createLogin(hsbe.getValue().toString(), hsbe.getSession().
    getAttribute("login").toString());
    } catch(Exception e){
    e.printStackTrace();
    System.out.println("Error insert data user: " + hsbe.getValue());
    } finally{
    Configuration.releaseRootApplicationModule(am, true);
    Everything is running well in Jdev 10.1.3 (I'm using ADF Faces technology), and I'm trying to deploy it on OC4J 10.1.2 and it works. But it raised an error when this part of code is runned.
    --------------caused and error------------------------
    hsbe.getSession().setAttribute("login", new Date(new Timestamp(
    System.currentTimeMillis())));
    And this is an error:
    javax.faces.FacesException: #{pdt001.loginAction}: javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: oracle.jbo.domain.Date.<init>(Ljava/sql/Timestamp;)V     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:78)     at oracle.adf.view.faces.component.UIXCommand.broadcast(UIXCommand.java:211)     at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)     at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)     at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)     at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:332)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)     at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(AdfFacesFilterImpl.java:367)     at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(AdfFacesFilterImpl.java:336)     at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFacesFilterImpl.java:196)     at oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java:87)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)     at com.ahm.filter.AhmFilterSession.doFilter(AhmFilterSession.java:45)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:645)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)     at java.lang.Thread.run(Thread.java:534)Caused by: javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: oracle.jbo.domain.Date.<init>(Ljava/sql/Timestamp;)V     at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:130)     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)     ... 23 moreCaused by: java.lang.NoSuchMethodError: oracle.jbo.domain.Date.<init>(Ljava/sql/Timestamp;)V     at com.ahm.pdt001.listener.Pdt001AttributeSessionListener.attributeAdded(Pdt001AttributeSessionListener.java:27)     at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.http.EvermindHttpSession.setAttribute(EvermindHttpSession.java:128)     at com.ahm.pdt001.bean.Pdt001Bean.loginAction(Pdt001Bean.java:61)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     at java.lang.reflect.Method.invoke(Method.java:324)     at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
    Does anybody have the same problem like this? I've used the same method in my previous project to create oracle.jbo.domain.Date with current time using java.sql.Timestamp, but I don't know why this error happened.
    Thx,
    Andre

    Re: oracle jbo.domain.Date issues in 10.1.3
    Sascha

  • Extracting xmldata from clob field in oracle

    I have an xml document stored in xmltype (clob)field in oracle
    Below is the xml data inside the xml ( I have kind of 300 elements similar to this inside the xml)
    <ns1:E-I12_IS_13 ObjID="I12" ObjType="e">5437090</ns1:E-I12_IS_13>
    <ns1:E-I13_IS_14 ObjID="I13" ObjType="e">5</ns1:E-I13_IS_14>
    <ns1:E-I14_IS_15 ObjID="I14" ObjType="e">9</ns1:E-I14_IS_15>
    The requirement is to get all the elements from the xmldata and compare against the 15-16 oracle tables ( here xml is converted and stored in these tables by a tibco process)
    select dbms_lob.instr(clobcolumnname,'E-I13_IS_14') from tablename  where  ( given condition to extract specific transaction)
    the above statement gives me position of the string
    select dbms_lob.substr(clobcolumnname,6( length of element value),870(position from where the value starts)) from tablename where  condition
    the abv statement gives me the element value
    but I want to extract the value for  any element by giving the element name ( if u see any value comes after objtype="e"  between > and < tags)
    can anyone on this forum tell me to extract the element value just by giving element name ( since I have to do the same for n number of elements - how to find position of > and < tags??)

    Hi Odie,
    Good afternoon. I am not getting any help to solve my xmltable issues.
    <MeterTransaction xmlns:CorralClub="http://webservice.hlsr.net/CorralClubService/">
      <TransactionID>1100</TransactionID>
      <Club_Number>CN001</Club_Number>
      <Club_Activity_ID>0</Club_Activity_ID>
      <Transaction_Date>2014-01-29T00:00:00-06:00</Transaction_Date>
      <Creation_Date>2014-01-29T00:00:00-06:00</Creation_Date>
      <User_ID>1766</User_ID>
      <Status />
      <TicketCount>0</TicketCount>
      <Usage>0</Usage>
      <BadPulls>0</BadPulls>
      <Discrepancy>0</Discrepancy>
      <Percent>0</Percent>
      <Comments />
      <Readings>
         ********** Can be disregarded ******************
            <xs:schema id="ClubMeter" targetNamespace="http://tempuri.org/ClubMeter.xsd" xmlns:mstns="http://tempuri.org/ClubMeter.xsd" xmlns="http://tempuri.org/ClubMeter.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-               com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
                        ****** Some other elements
              </xs:schema>
          *********** End of Can be disregarded ******************
        <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
          <ClubMeter xmlns="http://tempuri.org/ClubMeter.xsd">
            <MeterBar diffgr:id="MeterBar1" msdata:rowOrder="0" diffgr:hasChanges="modified">
              <Club_Number>CN001</Club_Number>
              <Bar_Number>BBS01</Bar_Number>
              <TicketCount>111</TicketCount>
              <Usage>88</Usage>
              <BadPulls>15</BadPulls>
              <Discrepancy>8</Discrepancy>
              <Percent>0.0720720720720721</Percent>
              <DISPLAY>BEER - BBS01</DISPLAY>
            </MeterBar>
            <MeterBar diffgr:id="MeterBar2" msdata:rowOrder="1" diffgr:hasChanges="modified">
              <Club_Number>CN001</Club_Number>
              <Bar_Number>BBS02</Bar_Number>
              <DISPLAY>BEER - BBS02</DISPLAY>
            </MeterBar>
            <MeterReading diffgr:id="MeterReading16" msdata:rowOrder="15" diffgr:hasChanges="modified">
              <Club_Number>CN001</Club_Number>
              <Bar_Number>BBS01</Bar_Number>
              <Position>11</Position>
              <Inventory_Item_ID>12906</Inventory_Item_ID>
              <Product_Class>SOFT-GOODS</Product_Class>
              <Product_Type>SOFT DRINK</Product_Type>
              <Product_Name>Full Throttle Coca Cola</Product_Name>
              <Open>6</Open>
              <Add1>11</Add1>
              <Close>1</Close>
              <Usage>16</Usage>
            </MeterReading>
            <MeterReading diffgr:id="MeterReading96" msdata:rowOrder="95" diffgr:hasChanges="modified">
              <Club_Number>CN001</Club_Number>
              <Bar_Number>BBS01</Bar_Number>
              <Position>10</Position>
              <Inventory_Item_ID>2188</Inventory_Item_ID>
              <Product_Class>BEER</Product_Class>
              <Product_Type>DOMESTIC</Product_Type>
              <Product_Name>Lone Star Regular</Product_Name>
              <Open>6</Open>
              <Add1>2</Add1>
              <Close>1</Close>
              <BadPulls>3</BadPulls>
              <Usage>4</Usage>
            </MeterReading>
            <MeterReading diffgr:id="MeterReading17" msdata:rowOrder="16" diffgr:hasChanges="modified">
              <Club_Number>CN001</Club_Number>
              <Bar_Number>BBS02</Bar_Number>
              <Position>11</Position>
              <Inventory_Item_ID>12906</Inventory_Item_ID>
              <Product_Class>SOFT-GOODS</Product_Class>
              <Product_Type>SOFT DRINK</Product_Type>
              <Product_Name>Full Throttle Coca Cola</Product_Name>
            </MeterReading>
            <MeterReading diffgr:id="MeterReading97" msdata:rowOrder="96" diffgr:hasChanges="modified">
              <Club_Number>CN001</Club_Number>
              <Bar_Number>BBS02</Bar_Number>
              <Position>10</Position>
              <Inventory_Item_ID>2188</Inventory_Item_ID>
              <Product_Class>BEER</Product_Class>
              <Product_Type>DOMESTIC</Product_Type>
              <Product_Name>Lone Star Regular</Product_Name>
            </MeterReading>
          </ClubMeter>
          <diffgr:before>
            <MeterBar xmlns="http://tempuri.org/ClubMeter.xsd" diffgr:id="MeterBar1" msdata:rowOrder="0">
              <Bar_Number>BBS01</Bar_Number>
              <DISPLAY>BEER - BBS01</DISPLAY>
            </MeterBar>
            <MeterBar xmlns="http://tempuri.org/ClubMeter.xsd" diffgr:id="MeterBar2" msdata:rowOrder="1">
              <Bar_Number>BBS02</Bar_Number>
              <DISPLAY>BEER - BBS02</DISPLAY>
            </MeterBar>
            <MeterReading xmlns="http://tempuri.org/ClubMeter.xsd" diffgr:id="MeterReading16" msdata:rowOrder="15">
              <Bar_Number>BBS01</Bar_Number>
              <Position>11</Position>
              <Inventory_Item_ID>12906</Inventory_Item_ID>
              <Product_Class>SOFT-GOODS</Product_Class>
              <Product_Type>SOFT DRINK</Product_Type>
              <Product_Name>Full Throttle Coca Cola</Product_Name>
            </MeterReading>
            <MeterReading xmlns="http://tempuri.org/ClubMeter.xsd" diffgr:id="MeterReading96" msdata:rowOrder="95">
              <Bar_Number>BBS01</Bar_Number>
              <Position>10</Position>
              <Inventory_Item_ID>2188</Inventory_Item_ID>
              <Product_Class>BEER</Product_Class>
              <Product_Type>DOMESTIC</Product_Type>
              <Product_Name>Lone Star Regular</Product_Name>
            </MeterReading>
            <MeterReading xmlns="http://tempuri.org/ClubMeter.xsd" diffgr:id="MeterReading17" msdata:rowOrder="16">
              <Bar_Number>BBS02</Bar_Number>
              <Position>11</Position>
              <Inventory_Item_ID>12906</Inventory_Item_ID>
              <Product_Class>SOFT-GOODS</Product_Class>
              <Product_Type>SOFT DRINK</Product_Type>
              <Product_Name>Full Throttle Coca Cola</Product_Name>
            </MeterReading>
            <MeterReading xmlns="http://tempuri.org/ClubMeter.xsd" diffgr:id="MeterReading97" msdata:rowOrder="96">
              <Bar_Number>BBS02</Bar_Number>
              <Position>10</Position>
              <Inventory_Item_ID>2188</Inventory_Item_ID>
              <Product_Class>BEER</Product_Class>
              <Product_Type>DOMESTIC</Product_Type>
              <Product_Name>Lone Star Regular</Product_Name>
            </MeterReading>
          </diffgr:before>
        </diffgr:diffgram>
      </Readings>
    </MeterTransaction>
    From the above abbreviated XML document, how do I get the values from the nodes of MeterBar and MeterReading nodes?
    I really appreciate your help in this regard.
    Thanks,
    Bidhan

  • URGENT!Can I user a THIN jdbc driver to access a CLOB field from oracle 8.0.5 DB?

    URGENT!Can I user a THIN jdbc driver to access a CLOB field from oracle 8.0.5 DB?

    I think you'd need to contact Oracle support to get access to older versions of the driver.
    Since 8.0.5 isn't supported any longer, however, is it possible for you to update your Oracle client to one of the supported releases-- 8.1.7 or 9i?
    Justin

  • Issue related with CLOB field in Oracle and PI

    Dear Experts,
    We are trying to transfer material Long description from SAP to Oracle table.
    There is a field in Oracle table 'LNG_DESC' which is defined as CLOB.
    In PI mapping we have defined that fields as String type with Maxlength as 14000.
    There are few materials for which this limit is excedding and we are getting ORA:014
    String too Long' error in communication channel.
    Kindly suggest that how can we define a field in PI as CLOB or how to handle this
    situation.
    Thanks
    Sumit

    Hi Hank,
    The reason could be either improper set up and loading sequence followed, or transactions not locked while performing set up filling and initialization.
    There could be two approaches to rectify this.
    1. Redo the inventory data, as per how to document.
    2. Identify the transactions that are not captured, by running the reports and analysing the date on which transactions are not captured(this could be quite painful) and then fill set up of movements just for these documents and load to cube without discurbing the deltas.
    Do write back to me, if you have any questions.
    Naveen

  • Forms 6.0 how to query clob column with oracle 9.2 DB

    hi every body,
    i made install for oracle 9.2 oracle DB every thing goes ok but when i made query in my form version 6.0 which have CLOB column the form closed automatically without any message?
    and just for know when i run the same form with oracle 8.1.7 DB the form made query normally without any problem.
    i want your help please.
    Message was edited by:
    mshaqalaih

    I know there was a problem in 6i where you would get a crash if your query returned more than {Max Length} characters of the field representing the CLOB column.

  • Using long vs. clob datatype with Oracle 8.1.7 and interMedia

    I am trying to determine the best datatype to use for a column I
    wish to search using the interMedia contains() function. I am
    developing a 100% java application using Oracle 8.1.7 on Linux.
    I'd prefer to use the standard JDBC API's for PreparedStatement,
    and not have to use Oracle extensions if possible. I've
    discovered that there are limitations in the support for LOB's
    in Oracle's 100% java driver. The PreparedStatement methods
    like setAsciiStream() and setCharacterStream() are documented to
    have flaws that may result in the corruption of data. I have
    also noticed that socket exceptions sometimes occur when a large
    amount of data is transferred. If I use the long datatype for
    my table column, the setCharacterStream() method seems to
    transfer the data correctly. When I try to search this column
    using the interMedia contains() function, I get strange
    results. If I run my search on Oracle 8.1.6 for Windows, the
    results seem to be correct. If I run the same search on Oracle
    8.1.7 for Linux, the results are usually incorrect. The same
    searches seem to work correctly on both boxes when I change the
    column type from long to clob. Using the clob type may not be
    an option for me since the standard JDBC API's to transfer data
    into internal clob fields are broken, and I may need to stick
    with standard JDBC API's. My customer wishes to purchase a
    version of Oracle for Linux that will allow us to implement the
    search capability he requires. Any guidance would be greatly
    appreciated.

    I've finally solved it!
    I downloaded the following jre from blackdown:
    jre118_v3-glibc-2.1.3-DYNMOTIF.tar.bz2
    It's the only one that seems to work (and god, have I tried them all!)
    I've no idea what the DYNMOTIF means (apart from being something to do with Motif - but you don't have to be a linux guru to work that out ;)) - but, hell, it works.
    And after sitting in front of this machine for 3 days trying to deal with Oracle's, frankly PATHETIC install, that's so full of holes and bugs, that's all I care about..
    The one bundled with Oracle 8.1.7 doesn't work with Linux redhat 6.2EE.
    Don't oracle test their software?
    Anyway I'm happy now, and I'm leaving this in case anybody else has the same problem.
    Thanks for everyone's help.

  • Problem with oracle.jbo.domain.Date and format 'dd.MM.yyyy'

    JBO-25009: Cannot create an object of type:oracle.jbo.domain.Date with value: 09.10.2003
    In EOImplMsgBundle :
    {"Dbeg_FMT_FORMATTER", "oracle.jbo.format.DefaultDateFormatter"},
    {"Dbeg_FMT_FORMAT", "dd.MM.yyyy"}};
    In VOImplMsgBundle :
    {"Dbeg_FMT_FORMAT", "dd.MM.yyyy"},
    {"Dbeg_FMT_FORMATTER", "oracle.jbo.format.DefaultDateFormatter"},
    Why ? Help Please

    I have the same problem !
    I have extended the formatinfo.xml with:
    <DOMAIN CLASS="oracle.jbo.domain.Date">
    <FORMATTER name="Simple Date" class="oracle.jbo.format.DefaultDateFormatter">
    <FORMAT text="dd.MM.yyyy" />
    <FORMAT text="dd-MM-yyyy" />
    <FORMAT text="yyyy-MM-dd" />
    <FORMAT text="yyyy-MM-dd G 'at' hh:mm:ss" />
    <FORMAT text="EEE, MMM d, ''yy" />
    </FORMATTER>
    </DOMAIN>
    And then I have set my attibutes to use this FORMATTER with FORMAT "dd.MM.yyyy".
    When I start my application, I became an error and the date-fields are blank ... The application can not convert my Date in 'dd.MM.yyyy' format ...
    When I set my attributes to Format Type <none>, it works, the date-fields are present ...

  • Insert into CLOB fails with Oracle ODBC driver version 9.02.00.65

    I tried to insert into CLOB using the latest Oracle ODBC driver 9.02.00.65 and it fails. But the same works with earlier versions of ODBC driver earlier to 9.02.00.65 ie., 9.02.00.63.
    Here is the code snippet I tried. Any help now is highly appreciated as I am in the crunch time.
    I tried the same code snippet with VARCHAR2 column with the same driver and it works.
    ** CONVDSN.C - This is the ODBC sample code for
    ** creating File DSN pointers to machine DSNs.
    **This code is furnished on an as-is basis as part of the ODBC SDK and is
    **intended for example purposes only.
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <sql.h>
    #include <sqlext.h>
    #include <odbcinst.h>
    #include <sqltypes.h>
    #define MAXDATALEN 25 //maximum data length per column
    #define MAX_COL 15 //maximum column in result set
    #define MAX_ROW 100 //maximum number of rows
    #define MAXBUFLEN 256
    #define SQLERR_FORMAT "SQL Error State:%s, Native Error Code: %lX, ODBC Error: %s"
    #define MAXDISPLAYSIZE MAX_COL*(MAXDATALEN+1)
    #define SQLWRNMSGTITLE "SQL_SUCCESS_WITH_INFO results"
    #define SQLERRCNTDTITLE "SQL_ERROR results continued"
    #define SQLWRNMSGTITLE "SQL_SUCCESS_WITH_INFO results"
    #define SQLWRNCNTDTITLE "SQL_SUCCESS_WITH_INFO results continued"
    #define NULLDATASTRING "SQL_NULL_DATA"
    #define SQLERRMSGTITLE "SQL_ERROR results"
    // prototypes
    void ExpandFileName(LPSTR szFileDSNName, LPCSTR szDSNName);
    void MakeLegalName(LPSTR szLegalDSNName, LPCSTR szDSNName);
    // main routine: Iterate through the user and system DSNs, creating a pointer
    // to each.
    void FAR PASCAL DisplayError(SQLRETURN nResult, HWND hWnd, SWORD fHandleType, SQLHANDLE handle);
    void insertSelectClob();
    void checkRcCode(RETCODE rc);
    int main (int argc, char* argv[])
         insertSelectClob();
    return 0;
    void FAR PASCAL DisplayError(SQLRETURN nResult, HWND hWnd, SWORD fHandleType, SQLHANDLE handle)
         UCHAR szErrState[SQL_SQLSTATE_SIZE+1]; // SQL Error State string
         UCHAR szErrText[SQL_MAX_MESSAGE_LENGTH+1]; // SQL Error Text string
         char szBuffer[SQL_SQLSTATE_SIZE+SQL_MAX_MESSAGE_LENGTH+MAXBUFLEN+1];
         // formatted Error text Buffer
         SWORD wErrMsgLen; // Error message length
         UDWORD dwErrCode; // Native Error code
         int iSize; // Display Error Text size
         SQLRETURN nErrResult; // Return Code from SQLGetDiagRec
         SWORD sMsgNum = 1;
         SWORD fFirstRun = TRUE;
         char szDispBuffer[MAXDISPLAYSIZE+1]; // Display Buffer
         szBuffer[0] = '\0';
         do
              // continue to bring messageboxes till all errors are displayed.
              // more than one message box may be reqd. as err text has fixed
              // string size.
              // initialize display buffer with the string in error text buffer
              strcpy(szDispBuffer, szBuffer);
              // call SQLGetDiagRec function with proper ODBC handles, repeatedly until
              // function returns SQL_NO_DATA. Concatenate all error strings
              // in the display buffer and display all results.
              while ((nErrResult = SQLGetDiagRec(fHandleType, handle, sMsgNum++,
                   szErrState, &dwErrCode, szErrText,
                   SQL_MAX_MESSAGE_LENGTH-1, &wErrMsgLen)) != SQL_NO_DATA)
                   if(nErrResult == SQL_ERROR || nErrResult == SQL_INVALID_HANDLE)
                   break;
                   wsprintf(szBuffer, SQLERR_FORMAT, (LPSTR)szErrState, dwErrCode, (LPSTR)szErrText);
                   iSize = strlen(szDispBuffer);
                   if (iSize && (iSize+strlen(szBuffer)+1) >= MAXDISPLAYSIZE)
                   break;
                   if (iSize)
                   strcat(szDispBuffer, "\n");
                   strcat(szDispBuffer, szBuffer);
              // display proper ERROR or WARNING message with proper title
              if (nResult == SQL_SUCCESS_WITH_INFO)
                   MessageBox(hWnd, szDispBuffer, (fFirstRun? SQLWRNMSGTITLE : SQLWRNCNTDTITLE),
                   MB_OK | MB_ICONINFORMATION);
              else
                   MessageBox(hWnd, szDispBuffer, (fFirstRun? SQLERRMSGTITLE : SQLERRCNTDTITLE),
                   MB_OK | MB_ICONEXCLAMATION);
              if (fFirstRun)
                   fFirstRun = FALSE;
         while (!(nErrResult == SQL_NO_DATA || nErrResult == SQL_ERROR || nErrResult == SQL_INVALID_HANDLE));
    void insertSelectClob()
    SQLCHAR clobdata[1001];
    SQLCHAR resultdata[1001];
    SQLINTEGER ind = SQL_DATA_AT_EXEC;
    SQLCHAR *bufp;
         SQLINTEGER cbOrderID = sizeof(SQLSMALLINT);
         SQLSMALLINT sTmp=13;
         SQLCHAR *sqlStmt1  = _T("INSERT INTO clobtbl(id, clob1) VALUES(?, ?)");
         SQLCHAR *sqlStmt2  = _T("SELECT id, clob1 FROM clobtbl");
    //     SQLCHAR *sqlStmt1  = _T("INSERT INTO testInsert(id, clob1) VALUES(?, ?)");
    // SQLCHAR *sqlStmt2  = _T("SELECT id, clob1 FROM testInsert");
    int clobdatalen, chunksize, dtsize, retchklen;
         HENV envHnd;
    HDBC conHnd;
    HSTMT stmtHnd;
    RETCODE rc;
         int nRowcnt=0;
         SQLPOINTER pToken = NULL;
    rc = SQL_SUCCESS;
    // ENV is allocated
    rc = SQLAllocEnv(&envHnd);
    // Connection Handle is allocated
    rc = SQLAllocConnect(envHnd, &conHnd);
    rc = SQLConnect(conHnd, T("testd734"), SQLNTS, T("ipathdba"), SQLNTS, T("ipathdba"), SQLNTS);
    printf(_T("Insert CLOB1 using SQLPutData...\n[%s]\n"), sqlStmt1);
    // Set CLOB Data
    int i;
    SQLCHAR ch;
    for (i=0, ch=_T('A'); i< sizeof(clobdata)/sizeof(SQLCHAR); ++i, ++ch)
    if (ch > _T('Z'))
    ch = _T('A');
    clobdata[i] = ch;
    clobdata[sizeof(clobdata)/sizeof(SQLCHAR)-1] = _T('\0');
    clobdatalen = lstrlen(clobdata); // length of characters
    chunksize = clobdatalen / 7; // 7 times to put
         rc = SQLAllocHandle(SQL_HANDLE_STMT, conHnd, &stmtHnd);
    // Step 1: Prepare
    rc = SQLPrepare(stmtHnd, sqlStmt1, SQL_NTS);
    // checkSQLErr(envHnd, conHnd, stmtHnd, rc);
    // Step 2: Bind Parameter with SQL_DATA_AT_EXEC
    rc = SQLBindParameter(stmtHnd,
    1,
    SQL_PARAM_INPUT,
    SQL_C_SSHORT,
    SQL_INTEGER,
    0,
    0,
    &sTmp,
    0,
    &cbOrderID);
    rc = SQLBindParameter(stmtHnd,
    2,
    SQL_PARAM_INPUT,
    SQL_C_CHAR,
    SQL_LONGVARCHAR,
    clobdatalen*sizeof(CHAR),
    0,
    (SQLPOINTER)clobdata,
    clobdatalen*sizeof(CHAR),
    &ind);
    // checkSQLErr(envHnd, conHnd, stmtHnd, rc);
    // Step 3: Execute
    rc = SQLExecute(stmtHnd);
         while (rc == SQL_NEED_DATA) {
              rc = SQLParamData(stmtHnd, &pToken);
              if (rc == SQL_NEED_DATA) {
                   for (dtsize=0, bufp = clobdata;
                        dtsize < clobdatalen;
                        dtsize += chunksize, bufp += chunksize)
                   int len;
                   if (dtsize+chunksize < clobdatalen)
                        len = chunksize;
                        rc = SQLPutData(stmtHnd, bufp, len*sizeof(SQLCHAR));
                   else
                        len = clobdatalen-dtsize;
                        rc = SQLPutData(stmtHnd, bufp, SQL_NTS);
              rc = SQLParamData(stmtHnd, &pToken);
    // Fails as row count retrieved is zero.
         rc = SQLRowCount(stmtHnd, &nRowcnt);
         if(rc != SQL_SUCCESS)
              DisplayError(rc, NULL, SQL_HANDLE_ENV, conHnd);
    rc = SQLFreeStmt(stmtHnd, SQL_CLOSE);
    printf(_T("Finished Update\n\n"));
    rc = SQLAllocStmt(conHnd, &stmtHnd);
    if (rc != SQL_SUCCESS)
    printf(_T("Failed to allocate STMT\n"));
    exit(-1);
    // Clear Result Data
    memset(resultdata, 0, sizeof(resultdata));
    chunksize = clobdatalen / 15; // 15 times to gut
    rc = SQLExecDirect(stmtHnd, sqlStmt2, SQL_NTS); // select
         if(rc != SQL_SUCCESS)
              DisplayError(rc, NULL, SQL_HANDLE_ENV, conHnd);
    // Step 2: Fetch
    rc = SQLFetch(stmtHnd);
    for(dtsize=0, bufp = resultdata;
    dtsize > sizeof(resultdata)/sizeof(CHAR) && rc != SQL_NO_DATA;
    dtsize += chunksize-1, bufp += chunksize-1)
    int len; // len should contain the space for NULL termination
    if (dtsize+chunksize<sizeof(resultdata)/sizeof(CHAR))
    len = chunksize;
    else
    len = sizeof(resultdata)/sizeof(CHAR)-dtsize;
    // Step 3: GetData
    rc = SQLGetData(stmtHnd,
    2,
    SQL_C_CHAR,
    (SQLPOINTER)bufp,
    len*sizeof(CHAR),
    &retchklen);
    if (!_tcscmp(resultdata, clobdata))
    printf(_T("Succeeded!!\n\n"));
    else
    printf(_T("Failed!!\n\n"));
         if (conHnd)
              SQLFreeConnect(conHnd);
         if (envHnd)
              SQLFreeEnv(envHnd);
    }

    Hi,
    Since 9.2 has been desupported for error correction you will not be able to download that version from OTN. You should ask whoever is providing the training if their is an alternate version you can use. The only versions that you will be able to download from oracle.com is 10.2 11.1, and 11.2.

  • Loading multiple text files from a folder into oracle clob field

    I would like to load about 300 word documents into a oracle clob field with each document inserted as a separate record.
    I'm not quite sure how to go about doing this. Is there a utility in oracle that would do this?
    I've looked at sql loader and utl_file but both require the name of the file. Is there a way I can do this?
    If its not possible using just oracle, does anyone know how I can do this in combination with perl?
    Many Thanks
    Sam

    I have no experience with this, but pl see if MOS Doc 73787.1 (How to Read A Binary File into BLOB Using PL/SQL) can help.
    Essentially, you will have to write code to loop thru all 300 files to load them into the database
    HTH
    Srini

  • Empty CLOB field value from Oracle database using JDBC Sender

    Hi All,
    I am selecting a CLOB field from Oracle database table using JDBC Sender adapter and getting error "NullPointerException"
    Seen SAP note 1283089 but its not applicable for my support pack PI 7.0 SP 12 and client dont want to upgrdate SP 17 right now.
    I tried rpad(1,0)Column_Name funciton in JDBC select query but it selcting blank value for every record even those having some value for this CLOB field so not useful
    Could anybody suggest possible way? client dont want to change anything at database side.
    Thanks,
    Dharamveer

    What is the Oracle driver version installed? You might need to install 10.x driver if not already using it.

  • Inserting data into a CLOB Field

    I am trying to insert a 100,000+ byte string into a CLOB field in Oracle, but I'm getting a "string literal too long" error. I am using Visual Basic and ADO to try to accomplish this. My insert statement is:
    sql = "INSERT INTO IMAGE_VERSION " & _
    "(field1, field2, field3)" & _
    "VALUES('" & strNm & "', '" & strDt & "', '" & strData & "')"
    Field 3 is defined as a CLOB in the database. From what I understand, the CLOB can hold massive amounts of data.
    Can anyone lend a hand?

    Re: OTN Downloads

  • Business Components and oracle.jbo.domain.Date

    Hello I have the next problem I have a Busines Component and I have to acess to rows who have Dates and with oracle.jbo.domain.Date I can4t acess to the day, month, year .
    Can anyone Help me how can I do to access this dates?
    Thanks a lot your your help.

    Hi,
    This is the trilogy problem:
    oracle.jbo.domain.Date
    oracle.sql.DATE
    java.util.Date
    The question is how to translate from one object type to another.
    You can use the following:
    oracle.jbo.domain.Date tmpDate = null;
    SimpleDateFormat tmpLocalFormat = new SimpleDateFormat();
    SimpleDateFormat tmpLocalFormat2 = new SimpleDateFormat();
    // Obtenir la date du sommaire
    tmpDate = (oracle.jbo.domain.Date) session.getValue("DateElem");
    // Initialisation des objets de formatage de date
    tmpLocalFormat.applyPattern("yyyy-MM-dd");
    tmpLocalFormat2.applyPattern("dd-MM-yyyy");
    // Conversion du format de date yyyy-MM-dd => dd-MM-yyyy
    tmpWhereClause = new String(tmpLocalFormat2.format(tmpLocalFormat.parse(tmpDate.toString())));
    // Ajouter ` la clause "Where" la contrainte de la date
    tmpWhereClause = "DrqSommaireInitial.DATE_SOMMAIRE = TO_DATE('" + tmpWhereClause + "', 'DD-MM-YYYY')";
    Take a look also to class calendar...
    null

  • Using Oracle Text with CLOB field containing multiple languages

    I'm using Oracle 10g (NLS_CHARACTERSET is set to. AL32UTF8) and have a table with a CLOB field which is storing text written in either English and/or Simplified Chinese.
    The following index has been created on this field:
    CREATE INDEX text_index
    ON text_table(text_field)
    INDEXTYPE IS CTXSYS.CONTEXT
    PARAMETERS('FILTER CTXSYS.INSO_FILTER');
    I'm having issues in returning text which matches the Chinese text using the CONTAINS operator. For some reason the following query is returning rows which do not contain any Chinese text:
    SELECT *
    FROM text_table
    WHERE contains(text_field,'炫%') > 1;
    A newsgroup user advised me to produce an explain plan using ctx_query.explain.
    I created 2 explain plans, one which was searching the index for 'A%' and the other searching for the Simplified Chinese character '炫%'. The results for the first test were as expected whereby the values contained within the OBJECT_NAME field all began with the letter 'A'.
    The second test however produced somewhat unexpected results. The OBJECT_NAME field this time contained various words, both English and Simplified Chinese. I could be wrong but it appeared to store every individual word in the CLOB field. Both tests produced different EQUIVALENCE rows, the first test was:
    OPTIONS = Null
    OBJECT_NAME = A%
    Whereas the second test produced:
    OPTIONS = (?)
    OBJECT_NAME = %
    Am I right in thinking the Simplified Chinese character is for some reason being converted to a '?' character?
    Any help on this will be much appreciated.

    As you're not specifying a lexer to use, it will use the BASIC_LEXER, designed for space-separated European-type languages. This won't work effectively with Chinese.
    If you know which documents are Chinese and which are English, you can write this into a LANGUAGE column and use the MULTI_LEXER - this will allow you to specify BASIC_LEXER for the English texts, and CHINESE_LEXER or CHINESE_VGRAM_LEXER for the Chinese texts.
    If you don't know the language, you must use either WORLD_LEXER (10g) or AUTO_LEXER (11g). These lexers will automatically determine the language of the documents and index them appropriately. In general. MULTI_LEXER will be faster and more accurate than either of the automatic alternatives.
    When querying for Chinese characters you need to be very careful with your NLS_LANG settings. You need to make sure that the character set defined in NLS_LANG is the same as the character set from which you've pasted (or typed) the chinese characters.
    The "?" in output usually just means "I don't know how to translate this character into your output character set". Sometimes it may appear as a reversed question mark.

Maybe you are looking for