Oracle Datatype references in JDBC

I am using JDBC to execute some stored procedures in Oracle 8.1.7. The stored procedures use user-defined Object type in the database.
My problem is that, even though all these object data types have public synonymns and have granted execute permissions to all users, when I try to reference any of these datatypes I have to qualify it by the datatype owner name. e.g., datatype name is SOMEDATATYPE owned by DEVEL and if I am logging into to the database (using JDBC) with the userid OTHERDEV then I can register the datatype only as follows:
m_oCallableStmt.registerOutParameter(1, OracleTypes.STRUCT, "DEVEL.SOMEDATATYPE");
I have to use the full qualifier even when creating the STRUCT using the StructDescriptor.createDescriptor.
Problem is when I need to migrate the code to production where the datatypes are owned by production ID, I have to change the qualifier either by storing it in some properties file or passing it as an init parameter to the servlet. Both of which are work arounds and not good solutions for what I am trying to do. JDBC should be able to use the public synonymns for Oracle Datatypes.
I must be missing something! Could someone please tell me what I could do to resolve this issue??

I think storing in the properties file is not a bad idea given your situation, because to me it looks like your jdbc driver doesn't support full 2.0 specification.
Take a look at http://java.sun.com/j2se/1.4/docs/api/java/sql/CallableStatement.html#registerOutParameter(int, int, java.lang.String)
Better you look at chapters 7 & 8 in http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html
Basically you should be able to map java objects with your user defined sql data objects/structs, register the java objects using setObject() and getObject() methods blah blah blah.
I'd rather go with properties files since I'm always under time constraints.!!

Similar Messages

  • How To Store pdf or doc file in Oracle Database using Java Jdbc?

    can any one help me out How To Store pdf or doc file in Oracle Database using Java Jdbc in JSP/Serlet? i tried like anything. using blob also i tried. but i am able 2 store images in DB not files. please if u know or else if u have some code like this plz send that to me, and help me out plz. i need that urgent.

    Hi.. i am not getting error, But i am not getting the original contents from my file. i am getting all ASCII vales, instead of my original data. here i am including my code.
    for Adding PDF in DB i used image.jsp
    Database table structure (table name. pictures )
    Name Null? Type
    ID NOT NULL NUMBER(11)
    IMAGE BLOB
    <%@ page language="java" import="java.util.*,java.sql.*,java.io.*" pageEncoding="ISO-8859-1"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%
    try{
         Class.forName("oracle.jdbc.driver.OracleDriver");
         Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.135:1521:orcl","scott","tiger");
         PreparedStatement ps,pstmt,psmnt;
         ps = con.prepareStatement("INSERT INTO pictures VALUES(?,?)");
    File file =
    new File("D:/info.pdf");
    FileInputStream fs = new FileInputStream(file);
    ps.setInt(1,4);
    ps.setBinaryStream(2,fs,fs.available());
    int i = ps.executeUpdate();
    if(i!=0){
    out.println("<h2>PDF inserted successfully");
    else{
    out.println("<h2>Problem in image insertion");
    catch(Exception e){
    out.println("<h2>Failed Due To "+e);
    %>
    O/P: PDF inserted successfully
    i tried to display that pdf using servlet. i am giving the code below.
    import java.io.IOException;
    import java.sql.*;
    import java.io.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class DispPDF extends HttpServlet {
         * The doGet method of the servlet. <br>
         * This method is called when a form has its tag value method equals to get.
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         public void service(HttpServletRequest request, HttpServletResponse response)
                   throws ServletException, IOException {
              //response.setContentType("text/html"); i commented. coz we cant use response two times.
              //PrintWriter out = response.getWriter();
              try{
                   InputStream sPdf;
                   Class.forName("oracle.jdbc.driver.OracleDriver");
                        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.135:1521:orcl","scott","tiger");
                        PreparedStatement ps,pstmt,psmnt;
                   psmnt = con.prepareStatement("SELECT image FROM pictures WHERE id = ?");
                        psmnt.setString(1, "4"); // here integer number '4' is image id from the table.
                   ResultSet rs = psmnt.executeQuery();
                        if(rs.next()) {
                   byte[] bytearray = new byte[1048576];
                        //out.println(bytearray);
                        int size=0;
                        sPdf = rs.getBinaryStream(1);
                        response.reset();
                        response.setContentType("application/pdf");
                        while((size=sPdf.read(bytearray))!= -1 ){
                        //out.println(size);
                        response.getOutputStream().write(bytearray,0,size);
                   catch(Exception e){
                   System.out.println("Failed Due To "+e);
                        //out.println("<h2>Failed Due To "+e);
              //out.close();
    OP
    PDF-1.4 %âãÏÓ 2 0 obj <>stream xœ+är á26S°00SIá2PÐ5´1ôÝ BÒ¸4Ü2‹ŠKüsSŠSŠS4C²€ê P”kø$V㙂GÒU×713CkW )(Ü endstream endobj 4 0 obj <>>>/MediaBox[0 0 595 842]>> endobj 1 0 obj <> endobj 3 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7 0000000000 65535 f 0000000325 00000 n 0000000015 00000 n 0000000413 00000 n 0000000168 00000 n 0000000464 00000 n 0000000509 00000 n trailer <<01b2fa8b70ac262bfa939cc786f8770c>]/Root 5 0 R/Size 7/Info 6 0 R>> startxref 641 %%EOF
    plz help me out.

  • Oracle 10.1.0 jdbc driver and 9i Database

    Are there any known issues with using the Oracle 10.1.0 jdbc drivers and 9i Database. I was lead to believe that the Jdbc drivers are backward compatible.
    Thanks

    Sorry for not including my error:
    Hello all,
    I am getting an error "Bigger type length than Maximum" when calling a stored procedure that returns a small result set. I am not working with BLOBs or CLOBs and cannot find anything on the web that addresses my specific situation.
    I would greatly appreciate any help available in solving this problem.
    Here is my data access object:
    package my.app.access;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import oracle.jdbc.OracleTypes;
    import oracle.jdbc.OracleTypes.*;
    import my.app.beans.Person;
    import my.app.util.Database;
    public class PersonAccess {
         public Person getPerson(Person person) throws SQLException, Exception {
              Database db = new Database();
              Connection con = db.connect();
              ResultSet rs;
              CallableStatement cs = con
                        .prepareCall("{call SP_GET_PERSON_BY_USER_ID (?,?)}");
              cs.setString(1, person.getUserId());
              cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
              cs.execute(); // ################### ERROR HAPPENS ON THIS LINE
              rs = (ResultSet) cs.getObject(2);
              if (rs.next() == true) {
                   person.setId(new Integer(rs.getString("id")).intValue());
                   person.setFirstName((String) rs.getString("first_name"));
                   person.setLastname((String) rs.getString("last_name"));
                   person.setPhoneNumber((String) rs.getString("phone_number"));
                   person.setEmailAddress((String) rs.getString("email_addr"));
                   person.setRoleId(new Integer(rs.getInt("role_id")).intValue());
                   //this.roleName = rs.getString("role_name");
                   person.setPassword((String) rs.getString("password"));
                   person.setAgencyId(new Integer(rs.getInt("agency_id")).intValue());
                   if (rs.getString("account_disabled").equals("1"))
                        person.setAccountDisabled(true);
                   if (rs.getString("pwd_change_reqd").equals("0"))
                        person.setPasswordChangeRequired(false);
              return person;
    And here is a test object:
    package my.app.access;
    import my.app.beans.*;
    public class testAccess {
         * @param args
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              PersonAccess pa = new PersonAccess();
              Person person = new Person();
              person.setUserId("jrlaughlin");
              try {
                   pa.getPerson(person);
              } catch (Exception e) {
                   e.printStackTrace();
              System.out.println("done");
    And here is the output from this test app
    java.sql.SQLException: Bigger type length than Maximum
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
         at oracle.jdbc.driver.DatabaseError.check_error(DatabaseError.java:884)
         at oracle.jdbc.driver.T4CMAREngine.buffer2Value(T4CMAREngine.java:2230)
         at oracle.jdbc.driver.T4CMAREngine.unmarshalUB4(T4CMAREngine.java:1146)
         at oracle.jdbc.driver.T4CTTIoac.unmarshal(T4CTTIoac.java:215)
         at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:121)
    done
         at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:125)
         at oracle.jdbc.driver.T4CTTIdcb.receiveFromRefCursor(T4CTTIdcb.java:103)
         at oracle.jdbc.driver.T4CResultSetAccessor.unmarshalOneRow(T4CResultSetAccessor.java:165)
         at oracle.jdbc.driver.T4CTTIrxd.unmarshal(T4CTTIrxd.java:787)
         at oracle.jdbc.driver.T4CTTIrxd.unmarshal(T4CTTIrxd.java:704)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:526)
         at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:179)
         at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:782)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2887)
         at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2978)
         at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4102)
         at my.app.access.PersonAccess.getPerson(PersonAccess.java:68)
         at my.app.access.testAccess.main(testAccess.java:17)
    I am only having this problem when using the 10g jdbc driver, 9.2.0.4 and up are fine.
    Thanks again.....

  • Oracle.sql.* with JDBC drivers 8.0.5

    the oracle.sql package is not included in my JDBC driver file classes111.zip given for oracle data server version 8.0.5.
    I would like to use the oracle STRUCT and ARRAY type for calling PL/SQL stored procedures taking STRUCT objects in arguments.
    Are the JDBC drivers 8.1.* compatible with the oracle data server 8.0.5 (if I only use the STRUCT or ARRAY types)? Is it a way for passing ARRAY of VARCHAR2 values to PL/SQL stored procedure with the oracle 8.0.5 JDBC driver?
    thanks

    Unfortunately, these classes (oracle.sql.STRUCT and oracle.sql.ARRAY) are not compatible to 8.0 database. There is server format changes between 8.1 and 8.0, and JDBC driver only supports the 8.1 format.
    Please upgrade your database to 8i.

  • Inserting files in to Oracle 8i database through JDBC - Only 4k data file

    Hi,
    I need to insert a files(images or excel files, doc files etc..) in to oracle 8i database through JDBC program. But i am not able to store more than 4k data files in to files. can any body give me solutions regarding this.
    My code is like this...
    String fileName ="Sample.jpg";
                                  String dataSource = "jdbc/oracle";
                   File file=null;
                   FileInputStream fis = null;
                   Context initCtx=null;
                   DataSource ds = null;
                   Connection con = null;
                   try
                        initCtx = new InitialContext();
                        ds = (DataSource)initCtx.lookup(dataSource);
                        con = ds.getConnection();
                      try
                         file = new File(fileName);
                         fis = new FileInputStream(file);
                        catch(FileNotFoundException fe)
                             out.println("File Not Found");
                                            PreparedStatement pstmt = con.prepareStatement("insert into bfiles values(?,?)");
                        pstmt.setString(1, fileName);
                        pstmt.setBinaryStream(2, fis, (int)file.length());
                        pstmt.executeUpdate();
                        out.println("Inserted");
                        fis.close();
                        pstmt.close();
                        con.close();
                        out.println("closed");
                   catch(Exception e)
                        out.println(e);
               }     in Oracle bi i have created a table like this :
    CREATE TABLE BFILES
      FILENAME     VARCHAR2(100)                    DEFAULT NULL,
      FILECONTENT  BLOB                             DEFAULT EMPTY_BLOB()
    )Please help me ourt to solve this problem.
    i got struck in this problem.
    its urgent
    thanks in advance
    djshivu

    Hi Shanu.
    Thanks for your help...
    By Using THIN driver also we can insert any files more than 4k and and retrive same. Fallowing codes worked fine for me using thin Driver .
    Following are the 2 programs to write and read.
    we can insert and retrieve any format of files ( jpg, gif, doc, xsl, exe, etc...)
    =======================================================
    // Program to insert files in to table
    import oracle.jdbc.driver.*;
    import oracle.sql.*;
    import java.sql.*;
    import java.io.*;
    import java.awt.image.*;
    import java.awt.*;
    * @author  Shivakumar D.J
    * @version
    public class WriteBlob{
    public static void main(String[] args){
    String filename = "018-Annexure-A.xls";
    Connection conn = null;
    try{
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn=DriverManager.getConnection("jdbc:oracle:thin:@test:1521:orcl","modelytics","modelytics");
        conn.setAutoCommit(false);
        Statement st = conn.createStatement();
        int b= st.executeUpdate("insert into bfiles values('"+filename+"', empty_blob())");
        ResultSet rs= st.executeQuery("select * from bfiles for update");
        rs.next();
        BLOB blob=((oracle.jdbc.driver.OracleResultSet)rs).getBLOB(2);
        FileInputStream instream = new FileInputStream(filename);
        OutputStream outstream = blob.getBinaryOutputStream();
        int chunk = blob.getChunkSize();
        byte[] buff = new byte[chunk];
        int le;
        while( (le=instream.read(buff)) !=-1)
            outstream.write(buff,0,le);
        instream.close();
        outstream.close();
        conn.commit();
        conn.close();
        conn = null;
        System.out.println("Inserted.....");
       catch(Exception e){
            System.out.println("exception"+e.getMessage());
            e.printStackTrace();
       }//catch
    }=======================
    // Program to retrieve files from database
    [import java.sql.*;
    import java.io.*;
    import java.awt.*;
    public class ReadImage
    public static void main(String a[])
        String fileName ="018-Annexure-A.xls";
        try
              Driver driver = new oracle.jdbc.driver.OracleDriver();
              DriverManager.registerDriver(driver);
              Connection con = DriverManager.getConnection("jdbc:oracle:thin:@test:1521:orcl", "modelytics", "modelytics");
            File file = new File("C:/Documents and Settings/USERID/Desktop/dump.xls");
              FileOutputStream targetFile=  new FileOutputStream(file); // define the output stream
              PreparedStatement pstmt = con.prepareStatement("select filecontent from bfiles where filename= ?");
              pstmt.setString(1, fileName);
               ResultSet rs = pstmt.executeQuery();
               rs.next();
               InputStream is = rs.getBinaryStream(1);
              byte[] buff = new byte[1024];
               int i = 0;
               while ((i = is.read(buff)) != -1) {
                    targetFile.write(buff, 0, i);
                   System.out.println("Completed...");
            is.close();
            targetFile.close();
            pstmt.close();
           con.close();
        catch(Exception e)
              System.out.println(e);
    }====================
    Table Structure is like this
    CREATE TABLE BFILES
      FILENAME     VARCHAR2(100)                    DEFAULT NULL,
      FILECONTENT  BLOB                             DEFAULT EMPTY_BLOB()
    )========================================================
    i hope above codes will helpful for our future programmers
    thanks shanu...
    regards
    djshivu...(javashivu)

  • Unable to connect to Oracle 8i using the JDBC - OCI8

    I am unable to connect to the to the Oracle 8i database using
    JDBC 8.1.5. er. Each time I try I get the message:
    "java.lang.UnsatisfiedLinkError: no ocijdbc8 in
    java.library.path"
    When I try to establich a "connection" using the connection
    manager with JDeveloper 2.0 I get the message:
    "No ocijdbc8 in shared library path"
    What's the problem? Is it that I do not have the appropriate
    driver? It is unlikely because the thin driver works...
    null

    I dealt with this problem. For some reason OCI drivers
    installation is not included in typiclal Jdev 2.0 instalation.
    (bug?). In your instalation kit find Oracle 8i instalation disk,
    and run the installer on the client machine (i.e. the same
    machine where Jdev is installed where you were not able to
    connect with OCI-8). Choose client installation and choose
    custom installation. Than in the product list choose JDBC
    drivers. Make sure OCI drivers are included. Install it. Now you
    can find file ocijdbc8.dll in your ORACLE_HOME/bin directory.
    Now you should be able to connect using OCI-8.
    Best of luck,
    Michael Gantman
    Preslav Nakov (guest) wrote:
    : I am unable to connect to the to the Oracle 8i database using
    : JDBC 8.1.5. er. Each time I try I get the message:
    : "java.lang.UnsatisfiedLinkError: no ocijdbc8 in
    : java.library.path"
    : When I try to establich a "connection" using the connection
    : manager with JDeveloper 2.0 I get the message:
    : "No ocijdbc8 in shared library path"
    : What's the problem? Is it that I do not have the appropriate
    : driver? It is unlikely because the thin driver works...
    null

  • Can oracle 8.1.6SDK JDBC driver talk to Oracle8.0.5 db?

    Hi,
    Can Oracle 8.1.6SDK JDBC drivers (both thin and OCI) talk to
    Oracle database 8.0.5? My web server and database server sit on
    same machine. Can I have oracle 8.1.6 JDBC driver installed in
    same oracle home directory as oracle8.0.5?
    thanks and regards
    null

    Giorgio Malvestiti (guest) wrote:
    : Lai (guest) wrote:
    : : Hi,
    : : Can Oracle 8.1.6SDK JDBC drivers (both thin and OCI) talk to
    : : Oracle database 8.0.5? My web server and database server
    sit
    : on
    : : same machine. Can I have oracle 8.1.6 JDBC driver installed
    : in
    : : same oracle home directory as oracle8.0.5?
    : : thanks and regards
    : From the FAQ page :
    : Which JDBC drivers support which versions of Oracle database?
    : JDBC 8.0.4 drivers can talk to RDBMS 8.0.4 and 7.3.4.
    : JDBC 8.0.5 drivers can talk to RDBMS 8.0.5, 804 and 7.3.4.
    : JDBC 8.0.6 drivers can talk to RDBMS 8.0.6, 8.0.5, 8.0.4 and
    : 7.3.4.
    : JDBC 8.1.5 drivers can talk to RDBMS 8.1.5, 8.0.6, 8.0.5,
    8.0.4
    : and 7.3.4.
    : JDBC 8.1.6 drivers can talk to RDBMS 8.1.6, 8.1.5, 8.0.6,
    8.0.5,
    : 8.0.4 and 7.3.4.
    : regards
    : giorgio
    Bonjourno,
    What is the URL of this FAQ ? I could not find it.
    Does the above assertions also apply to the JDK 1.2 (thin)
    driver of Oracle 8.1.6 ?
    Otherwise, there is no way to use JDK 1.2 with Oracle 7.3.4.
    Thank you,
    Jean-Pierre
    null

  • Fetching Oracle datatype through query...

    Hi,
    Can you tell me from which table I can query all the datatypes supported by the oracle?
    For example if I say Select tname from tab, it gives all the table name in the database, similarly I need a query through which I should be able to fetch the oracle datatypes.
    I want to create a table on the fly so I am planning to show all the oracle datattypes in a combo box, which I do not want to hardcore.
    Thanx a lot in advance...

    Things used to be quite simple. Fundamentally there are are only three primitive datatypes - NUMBER, DATE and VARCHAR - and everything is some variation of one of those. Plus BLOB and CLOB for large objects, of course (nobody should be using LONG any more).
    Now 9i has introduced XMLDATA and TIMESTAMP, which are similar to LOB and DATE, but actually have lots of different functionality. But what really makes things confusing is the User-Defined datatype, i.e. objects. You can use any TYPE in your database as a legitimate column datatype.
    Finally

  • Calling Stored Procedure from Oracle DataBase using Sender JDBC (JDBC-JMS)

    Hi All,
    We have requirement to move the data from Database to Queue (Interface Flow: JDBC -> JMS).
    Database is Oracle.
    *Based on Event, data will be triggered into two tables: XX & YY. This event occurs twice daily.
    Take one field: 'aa' in XX and compare it with the field: 'pp' in YY.
    If both are equal, then
         if the field: 'qq' in YY table equals to "Add" then take the data from the view table: 'Add_View'.
         else  if the field: 'qq' in YY table equals to "Modify"  then take the data from the view table: 'Modify_View'.
    Finally, We need to archive the selected data from the respective view table.*
    From each table, data will come differently, means with different field names.
    I thought of call Stored Procedure from Sender JDBC Adapter for the above requirement.
    But I heard that, we cannot call stored procedure in Oracle through Sender JDBC as it returns Cursor instead of ResultSet.
    Is there any way other than Stored Procedure?
    How to handle Data Types as data is coming from two different tables?
    Can we create one data type for two tables?
    Is BPM required for this to collect data from two different tables?
    Can somebody guide me on how to handle this?
    Waiting eagerly for help which will be rewarded.
    Thanks and Regards,
    Jyothirmayi.

    Hi Gopal,
    Thank you for your reply.
    >Is there any way other than Stored Procedure?
    Can you try configuring sender adapter to poll the data in intervals. You can configure Automatic TIme planning (ATP) in the sender jdbc channel.
    I need to select the data from different tables based on some conditions. Let me simplify that.
    Suppose Table1 contains 'n' no of rows. For each row, I need to test two conditions where only one condition will be satisfied. If 1st condition is satisfied, then data needs to be taken from Table2 else data needs to be taken from Table3.
    How can we meet this by configuring sender adapter with ATP?
    ================================================================================================
    >How to handle Data Types as data is coming from two different tables?
    If you use join query in the select statement field of the channel then whatever you need select fields will be returned. This might be fields of two tables. your datatype fields are combination of two diff table.
    we need to take data only from one table at a time. It is not join of two tables.
    ================================================================================================
    Thanks,
    Jyothirmayi.

  • ERROR IN ORACLE STORED PROCEDURE in JDBC RECIEVER

    Hi all
    i have an FILE2JDBC2FILE sync scenario.have configured this w/o BPM.i need to call an stored procedure which will return me the output in the outpur parameters.input out put parametrs of the stored procedure are.
         p_api_version               IN  NUMBER
        ,p_init_msg_list             IN  NUMBER DEFAULT EBS_ECOM_UTILS_PUB.G_TRUE
        ,p_ebs_place_in_t     IN  p_ebs_place_in_t(sql TABLE TYPE )
        ,p_ebs_std_call_o     IN  ebs_std_call_oty(sql TABLE TYPE )
        ,x_return_status            OUT VARCHAR2
        ,x_msg_count                OUT NUMBER
        ,x_msg_data                 OUT ebs_message_tty
        ,x_row_count                OUT NUMBER
        ,x_ebs_place_out_t      OUT ebs_place_out_toty(sql TABLE TYPE );
    where
    p_ebs_place_in_t is of type p_ebs_place_in_t which has 2 fields MDM_SYSTEM_REF,EMAIL_ADDR and START_DATE
    p_ebs_std_call_o is of table type ebs_std_call_oty which has 2 fields WORK_GRP_ID and  DEBUG_MODE 
    In XI i am passing the arguments in the following fashion to ORACLE (JDBC reciever adapter)
    <p_api_version isInput="true" type="integer">1</p_api_version>
    <p_init_msg_list isInput="true" type="integer">1</p_init_msg_list>
    <p_ebs_place_in_t isInput="true" type="CHAR">
    <MDM_SYSTEM_REF isInput="true" type="CHAR">MDM-237</MDM_SYSTEM_REF>( this is a field in p_ebs_place_in_t )
    <EMAIL_ADDR isInput="true" type="CHAR"></EMAIL_ADDR>>(this is a field in p_ebs_place_in_t )
    <START_DATE isInput="true" type="date"/>06-OCT-2009 00:00:00</START_DATE>>(this is a field in p_ebs_place_in_t )
    </p_ebs_place_in_t>
    <p_ebs_std_call_o isInput="true" type="CHAR">
    <WORK_GRP_ID isInput="true" type="integer">95714</WORK_GRP_ID>
    <DEBUG_MODE isInput="true" type="integer">5</DEBUG_MODE>
    </p_ebs_std_call_o>
    <x_return_status isOutput="true" type="CHAR"></x_return_status>
    <x_msg_count isOutput="true" type="integer"></x_msg_count>
    <x_msg_data isOutput="true" type="CHAR"></x_msg_data>
    <x_row_count isOutput="true" type="integer"></x_row_count>
    <x_ebs_place_out_t isOutput="true" type="CHAR">
    </x_ebs_place_out_t>
    i am gettng the below error when i am trying to post th message from RWB
    Error when executing statement for table/stored proc. 'APPS.EBS_CUSTOMER_SERVICE_PUB.MAINTAIN_PLACE' (structure 'StatementName1'): java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'MAINTAIN_PLACE' ORA-06550: line 1, column 7: PL/SQL: Statement ignored .
    please suggest..
    Edited by: Rohan Patil on Jun 13, 2010 12:55 AM

    HI Praveen,
    thanks for your reply.
    my stored procedure has input and output parameters both.
    and in XI i have created the data type for both isInput(passedwith all the required values) and isOutput(passed the null values)
    is this  correct..?or should i take only isInput parameters in the data type?
    do i need to take the isOutput also in the datatype?my stored procedure will return the output in the output parametrs.
    can i take only 1 or 2 output paraetrs as there are 4 to 5 output parameters for my sotred procedure.?
    and how will my response data type to send the output of the stored procedure to the FILE sustem.should it be also in the statement form?
    and also would like to know..some of my isInput parameters to the stored procedure has the table type structure as the input parameters.now my question is i should i declare them in my data type?
    can you please elaborate.

  • Query works in Oracle Client but not JDBC

    The query is as follows:
    SELECT COUNT(*) THE_COUNT FROM sentorders WHERE ordersentdate BETWEEN '15-JAN-01' and '15-JAN-03';When I run this query in the Oracle client (SQL+) it tells me that THE_COUNT is 4 which is correct but when I use the following JDBC code I get THE_COUNT is 0 which is incorrect.
    public ResultSet viewTotalSentOrdersByDate()
      throws SQLException, Exception {
          String beginDate = "15-JAN-01";
          String endDate = "15-JAN-03";
          ResultSet rs = null;
        try  {
          String queryString = ("SELECT COUNT(*) THE_COUNT FROM sentorders WHERE ordersentdate BETWEEN '" + beginDate + "' and '" + endDate + "'");
          System.out.println(queryString);
          Statement stmt = con.createStatement();
          rs = stmt.executeQuery(queryString);
          while(rs.next()) {
           System.out.println(rs.getString("THE_COUNT"))
        } catch (SQLException sqle) {
          error = "SQLException: Could not execute the query.";
          throw new SQLException(error);
        } catch (Exception e) {
          error = "An exception occured.";
          throw new Exception(error);               
        return rs;
      }Thanks for the help
    Zac

    The query is as follows:
    SELECT COUNT(*) THE_COUNT FROM sentorders WHERE ordersentdate BETWEEN '15-JAN-01' and '15-JAN-03';When I run this query in the Oracle client (SQL+) it tells me that THE_COUNT is 4 which is correct but when I use the following JDBC code I get THE_COUNT is 0 which is incorrect.
    public ResultSet viewTotalSentOrdersByDate()
    throws SQLException, Exception {
    String beginDate = "15-JAN-01";
    String endDate = "15-JAN-03";
    ResultSet rs = null;
    try {
    String queryString = ("SELECT COUNT(*) THE_COUNT FROM sentorders WHERE ordersentdate BETWEEN '" + beginDate + "' and '" + endDate + "'");
    System.out.println(queryString);
    Statement stmt = con.createStatement();
    rs = stmt.executeQuery(queryString);
    while(rs.next()) {
    System.out.println(rs.getString("THE_COUNT"))
    } catch (SQLException sqle) {
    error = "SQLException: Could not execute the query.";
    throw new SQLException(error);
    } catch (Exception e) {
    error = "An exception occured.";
    throw new Exception(error);
    return rs;
    }Thanks for the help
    Zac

  • How to use oracle collection type with JDBC?

    I try to use oracle collection type in java program. So I made some package and java program, however Java program was not found "package.collectiontype"(JDBC_ERP_IF_TEST.NUM_ARRAY) . please, show me how to use this.
    Java Version : Java 1.4
    JDBC Driver : Oracle Oci Driver
    DB: Oracle 9i
    No 1. Package
    ===========================================
    create or replace package JDBC_ERP_IF_TEST AS
    type NUM_ARRAY is table of number;
    procedure JDBC_ERP_IF_ARRAY_TEST(P_NUM_ARRAY IN NUM_ARRAY, ERR_NO OUT NUMBER, ERR_TEXT OUT VARCHAR2);
    procedure TEST(ABC IN NUMBER);
    END JDBC_ERP_IF_TEST;
    ==================================================
    No 2. Package Body
    ===============================================
    CREATE OR REPLACE package BODY JDBC_ERP_IF_TEST is
    procedure JDBC_ERP_IF_ARRAY_TEST(p_num_array IN NUM_ARRAY,
    ERR_NO OUT NUMBER,
    ERR_TEXT OUT VARCHAR2) is
    begin
    ERR_NO := 0;
    ERR_TEXT := '';
    dbms_output.enable;
    for i in 1 .. p_num_array.count() loop
    dbms_output.put_line(p_num_array(i));
    insert into emp (empno) values (p_num_array(i));
    commit;
    end loop;
    EXCEPTION
    WHEN OTHERS THEN
    ERR_NO := SQLCODE;
    ERR_TEXT := ERR_TEXT ||
    ' IN JDBC INTERFACE TEST FOR ORACLE ERP OPEN API..';
    ROLLBACK;
    RETURN;
    end JDBC_ERP_IF_ARRAY_TEST;
    procedure TEST(ABC IN NUMBER) IS
    begin
    insert into emp(empno) values (ABC);
    commit;
    end TEST;
    end JDBC_ERP_IF_TEST;
    ===============================================
    NO 3. Java Program
    ===============================================
    ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("JDBC_ERP_IF_TEST.NUM_ARRAY", getConnection());
    ARRAY array = new ARRAY(descriptor, getConnection(), arrs);
    cstmt = getConnection().prepareCall(LQueryFactory.getInstance().get("Meta/Basic/testJdbcErpArrayIf").getSql());
    cstmt.setArray(1, array);
    cstmt.registerOutParameter(2, Types.INTEGER);
    cstmt.registerOutParameter(3, Types.VARCHAR);
    ====================================================
    couldn't find this phase => JDBC_ERP_IF_TEST.NUM_ARRAY
    what can i do for this package and program? please help me..

    Something like this:
    create or replace type t_record as  object (
    id number,
    no number
    CREATE or replace type t_table AS TABLE OF t_record;
    set serveroutput on
    declare
      v_table t_table := t_table();
      v_t1 t_table := t_table();
    begin
      v_table.extend(1);
      v_table(1).ID := 1;
      v_table(1).No := 10;
      v_table.extend(1);
      v_table(2).ID := 2;
      v_table(2).ID := 20;
      SELEC t_record (ID,NO) BULK COLLECT INTO v_t1
      from TableA
      FROM TABLEA
      WHERE ID IN (select t.ID from table(v_Table) t);
      for i in 1..v_t1.count loop
        dbms_output.put_line(v_t1(i).ID);
        dbms_output.put_line(v_t1(i).No);
      end loop;
    end;
    /Untested!
    P;
    Edited by: bluefrog on Mar 5, 2010 5:08 PM

  • Oracle 8.1.5 JDBC driver problem with LONGVARCHAR

    Hi, I'm having problem with 8.1.5 release on Solaris with the
    JDBC type 4 driver (thin). If I create the following table
    create table test1 (col1 NUMBER, col2 LONG);
    Using JDBC driver to insert into the second column any string
    longer than 4000 characters causing run time exception. The type2
    driver works fine, but type2 is slow.
    String sql = "insert into test1 (col1, col2) values (1099,?)";
    PreparedStatement stmt ;
    stmt = conn.prepareStatement(sql);
    // create a string with very long value , bigger than 4096
    stmt.setString(1,string);
    stmt.executeUpdate();
    runtime exception:
    java.sql.SQLException: Data size bigger than max size for this
    type
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    at java.sql.SQLException.<init>(Compiled Code)
    at oracle.jdbc.dbaccess.DBError.check_error(Compiled
    Code)
    at oracle.jdbc.ttc7.TTCItem.setArrayData(Compiled Code)
    at
    oracle.jdbc.driver.OraclePreparedStatement.setItem(Compiled Code)
    at
    oracle.jdbc.driver.OraclePreparedStatement.setString(Compiled
    Code)
    at testi.main(Compiled Code)
    Any help is appreciated.
    Thanks
    Steve
    null

    Post the full stacktrace here
    Also you might want to post jdbc related questions to weblogic.developer.
    interest.jdbc
    Kumar
    DreamNEON wrote:
    Hello,
    the NSAPI integration works, also the JSP files.
    But I have still problems with the Jdriver for my Oracle 8.1.5.
    I get the message :
    Failed to invoke startup class
    weblogic.jdbc.common.internal.JdbcStartup=weblogic.jdbc.common.internal.JdbcStartup
    when the WebLogic Server is started.
    Any ideas or hints about that?
    Thanks in advance
    Armin

  • Oracle 8.1.5 - jdbc driver problem

    I am using Oracle8.1.5 (personal oracle) for database. I am trying to retrieve the data from JAVA(JDK 1.3). I use the following driver and its manager in the Java program:-
    DriverManager.registerDriver(new Oracle.jdbc.driver.OracleDriver());
    Class.forName("Oracle.jdbc.driver.OracleDriver");
    However Java is not getting compiled with the following error message:-
    Cannot resolve symbol:
    package: driver
    class: DriverManager
    I would request your goodselves to help me out. Thank you in anticipation.
    Regards,
    Sivaswamy

    Thanks for the reply.
    Have you tried manually taking the current time and
    converting it to the way Oracle is expecting it? If I embed a TO_DATE and format it, it works fine, but I want to stay database independent. Is that want you mean?
    Or how about using new java.util.Date() to get the
    current date?Not sure I follow you:
    --- insertStmt.setTimestamp(5, new java.sql.Date(System.currentTimeMillis()));
    Gives an error since setTimestamp expects a java.sql.Timestamp and
    --- insertStmt.setDate(5, new java.sql.Date(System.currentTimeMillis()));
    Only stores the date without the time.
    Thanks again,
    Todd

  • Passing XMLType Data into oracle stored procedure using JDBC

    Hi Friends,
    I have requirement where my oracle stored procedure accepts XML file as an input. This XML File is generated in runtime using java, I need to pass that xml file using JDBC to oracle stored procedure. Please let me know the fesibile solution for this problem.
    Following are the environment details
    JDK Version: 1.6
    Oracle: 10g
    Server: Tomcat 6.x
    Thanks in Advance

    user4898687 wrote:
    I have requirement where my oracle stored procedure accepts XML file as an input. This XML File is generated in runtime using java, I need to pass that xml file using JDBC to oracle stored procedure. Please let me know the fesibile solution for this problem.As stated - no.
    A 'file' is a file system entity. There is no way to pass a 'file' anywhere. Not PL/SQL. Not java.
    Now you can pass a file path (a string) in java and to PL/SQL.
    Or you can pass xml data (a string) in java and to PL/SQL. For PL/SQL you could use eithe a varchar2, if the xml is rather small, or a blob/clob.

Maybe you are looking for

  • Slow Photoshop Startup after installing Google Nik Plugins

    Today, I got the Google Nik Collection of plugins for photoshop and since the installation the photoshop startup has been really slow. I am running Adobe Photoshop CC 2014. It usually tooToday, I got the Google Nik Collection of plugins for photoshop

  • PSobject Has table to PStables

    Hi Guys, I having real hard time to figure out why same code used by me in tow different scripts result into two different views of psobject table $states = @{"Name" = "$N"; "SourceDatabase" = "$so"; TargetDatabase = "$TG";"Status" = "$ST"} $Psobj =

  • Burns stopping at multiplex with an error. How can I fix this?

    Hi. I'm using iDVD 7.1.1 (the latest update) in Mac OS 10.6.7 on a four-year-old MacBook Pro. Lately when I burn a video, either directly or a disc image, the burn process stops at multiplexing, and an error sign appears. What could be causing this,

  • AE CS6 11.0.3 not opening on Mavericks

    I've tried to uninstall and reinstall AE cs6 twice now with the update 11.0.3 and it still won't open on my computer.  Suggestions?

  • VPN connection base on PPTP not working correctly

    when I want to create VPN connection base on PPTP it's work and connect to internet but aftar some minutes it's disconnected.if i should use technical tips please help me.