Problem in callable statement

Hi All,
I have a get the data from table using CALLABLE statement.The problem is that that column datatype is CHAR.Is there any statement in java for to set
CallableStatement cstmt=null;
cstmt.setChar() ----- is it correct?

Sorry for mistyping, I meant:
Oracle CHAR type is mapped to Java String.
cstmt.setString() should do.

Similar Messages

  • Problems with Callable Statement

    Hi All,
    I have a problem with the callable statement that contains stored procedure.Here main thing i want to know is that can a stored procedure can be used for a database like Access.Because i am using Access as a database here.In which i have created the table Students.
    The table Students contains 3 fields they are name,amount & balance.
    The program is compiling well but during the runtime it is showing an error:-
    "Syntax error in Create Table" .
    For ur reference i have posted the code:-
    import java.io.*;
    import java.sql.*;
    public class CallStatDemo
    public static void main(String arg[])
    Connection con;
    CallableStatement cs;
    Driver dr;
    String str1,str2;
    int in1,in2;
    double d1;
    try
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:Ananth"); //the dsn name is Ananth
    init(con);
    if(con==null)
    System.out.println("Connection not Established");
    else
    cs=con.prepareCall("{call Payment(?,?)}");
    cs.setString(1,"Raman"); //name
    cs.setString(2,"2000"); //amount
    cs.execute();
    catch(Exception e)
    System.out.println("Error Message : "+e);
    static void init(Connection con)
    throws SQLException
    Statement stmt = con.createStatement();
    stmt.execute ("create or replace procedure Payment(name in text,amount in text)is " +
    " begin"+
    " update Students set balance=balance-amount where name =name;"+
    "end Payment;");
    stmt.close();
    Thanx,
    m.ananthu

    I have no clue if Access supports stored procedures, and this surely isn't related to JDBC at all. Did you check your Access documentation?
    Your posted code does not contain any CREATE TABLE statement, so where do you get your error (which line)
    Most probably Access does not support stored procedures. To verify that, you should execute your CREATE PROCEDURE statement from within Access, to verify that it is a supported statement.

  • Callable statement doubt-urgent

    hi all,i got a problem in callable statements.i know how to pass parameters to a procedure using a callable statement.but this time i need to pass a table name as a parameter.the problem is if i get that variable as a IN parameter in the procedure then how do you put that parameter in place of table name inside the procedure.heres a example,the pocedure is in oracle
    i am passing variable a from java
    create or replace procedure (a in varchar2)
    begin
    select * from <the parameter passed through a> where <condition>
    end;
    how can this be done.the select statement is given only as a example.the errors in the select are not emphasized here.the focus is on the table name.if there is any other way to do this do let me know.please reply fast.this is urgent.any kind of help is welcome.bye thiyagu.

    In some databases the SQL used in your stored procedure can reference 'variables' that contain the values to be used at statement execution time. This will be covered in your database's SQL reference. If this is not supported by your database you will have to perform a 'switch' based on the table name passed and select the SQL statement to be executed.

  • Callable statement problem-very urgent

    Hi Friends,
    i have 2 tables, in that two tables one column have same attribute column. when i update the first table through OAF page, i wanted to effect updated value in second table of that common field also. i wrote PL/SQL Procedure and called that into OAF by using callable statements. here first time i updated in the page, updated value is effecting into the first table while second table not effected the updated value. again i am trying to update the page this time in second table effected with first time updation value,while first table updated correctly. suppose i updated again in the page this time in second table effected with second time updation value, while first table updated correctly.this process continuing...
    example – I want to update forecast(this field is in two tables) value filed. Now forecast value is 10 in both tables , I updated as 20. this 20 updated value effected first table while second table forecast field is not effected.
    Again I am going to update value 30 in the place of 20. this 30 updated value effected first table while second table forecast field is 20(firstupdated value) effected.
    Again I am going to update value 40 in the place of 30. this 40 updated value effected first table while second table forecast field is 30(secondupdated value) effected this process continuing...
    Can any one help me out this problem
    This is I have written in AM-
    public void Callable()
    String forecast="";
    String name="";
    String product="";
    String business="";
    XXProgsVOImpl vo = getXXProgsVO1();
    RowSetIterator rowsetiterator=vo.getRowSetIterator();
    rowsetiterator.reset();
    while(rowsetiterator.hasNext())
    Row row = rowsetiterator.next();
    forecast=row.getAttribute("Forcast").toString();
    name=row.getAttribute("Name").toString();
    product=row.getAttribute("Product").toString();
    business=row.getAttribute("Business").toString();
    String s="BEGIN do_update(?,?,?,?);End;";
    OADBTransaction dbtrans=getOADBTransaction();
    OracleCallableStatement cs=(OracleCallableStatement)dbtrans.createCallableStatement(s,4);
    try
    cs.setString(1, forecast);
    cs.setString(2, name);
    cs.setString(3, product);
    cs.setString(4, business);
    cs.execute();
    dbtrans.commit();
    cs.close();
    catch(SQLException e)
    System.out.println(e.getMessage());
    Thanks and Regards,
    vamshi

    Hi Sumit and Thiago,
    Thanks for your information, my Both VO's are coming from EO'S. but first VO I have done some calculation on columns, that calulated value parameter passing to second page. this calculated value is the database column in second table. here when i update the calculated value in updated page , i want to effect this in second page table.
    do you have any work around this..
    Thanks and Regards,
    vamshi

  • Using A callable statement in java

    Hi all im trying to get results back from the database using a callable statement the problem is that it is placing / infront of single quotes.I need to get rid of this because it's not returning anything
    here is my code
    CallableStatement statementOne;
    statementOne = ComparitiveAnalysisGUI.conn.prepareCall("{call graphProc(?,?,?,?,?,?,?)}");
    statementOne.setString(1,"\"date_format(calldate, '%Y-%m-%d H:59:59'),avg(billsec)\"");
    statementOne.setString(2,"Clovercdr");
    statementOne.setString(3,start);
    statementOne.setString(4,end);
    statementOne.setString(5,"Boksburg");
    statementOne.setString(6,"\"billsec > 0 and Network = " + network + "\"");
    statementOne.setString(7,"\"date_format(calldate, '%Y-%m-%d %H:M:S')\"");
    System.out.println(statementOne.toString());
    rs = statementOne.executeQuery();
    the result of the println is
    com.mysql.jdbc.CallableStatement@ec4a87: CALL graphProc('"date_format(calldate, \'%Y-%m-%d %H:59:59\'),avg(billsec)"','Clovercdr','\'2006-03-14 00:00:01\'','\'2006-03-14 23:59:59\'','Boksburg','"billsec > 0 and Network = \'SAMobile\'"','"date_format(calldate, \'%Y-%m-%d %H:M:S\')"')
    as you can see quite a mess please help if you can get the statement to look as follows
    CALL graphProc("date_format(calldate, '%Y-%m-%d %H:59:59'),avg(billsec)",'Clovercdr','2006-03-14 00:00:01','2006-03-14 23:59:59','Boksburg',"billsec > 0 and Network = 'SAMobile'","date_format(calldate, '%Y-%m-%d %H:M:S')")
    thanks Brian

    Ok in order to understand why I did what I did parhaps it would be best if you saw my Stored procedure
    create procedure graphProc(col varchar(100),company varchar(20),startTime datetime,endTime datetime,branchName varchar(20),andSection varchar(200),groupSec varchar(100))
    BEGIN
    SET @stmt := CONCAT("SELECT ",col," from ",company," where calldate between '",startTime,"' and '",endTime,"' and branchName = '",branchName,"' and ",andSection," Group by ",groupSec);
    PREPARE stmt1 from @stmt;
    EXECUTE stmt1;
    the call is for example
    call graphProc("date_format(calldate, '%Y-%m-%d %H:59:59'),avg(billsec)",'Clovercdr','2006-03-01 00:00:01','2006-03-14 23:59:59','Boksburg',"billsec > 0 and date_format(calldate, '%k') BETWEEN 7 AND 19 and Network = 'SAMobile'","date_format(calldate, '%Y-%m-%d %H:M:S')")//
    as you can see In MySQL the "date_format(calldate, '%Y-%m-%d %H:59:59'),avg(billsec)" has to be quoted like this, so it can recognise it as a single parameter, since , '%Y-%m-%d %H:59:59' is viewed as another parameter
    thaks for your reply
    Brian

  • Please, Not getting result set from callable statement (Code posted)

    I am posting some simple code which should get a ResultSet from a CallableStatement object using the executeQuery() Method.
    It is returning "No RsultSet was produced"
    If I modify the code and simply output the CallableableStatement using its executeUpdate() then getString() methods it works fine. Anything obviously wrong with this bit of code? Thanks.
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    import db.util.query.*;
    import db.util.pool.*;
    public class oracle extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
    response.setContentType("text/html");
    java.io.PrintWriter out = response.getWriter();
    Connection con = ConnectionFactory.getConnection();
    CallableStatement cs = null;
    ResultSet rs = null;
    int intID = 1;
    try{
    cs = con.prepareCall("{? = call test1(?)}");
    cs.registerOutParameter(1, java.sql.Types.VARCHAR);
    cs.setInt(2,intID);
    /*These lines work on their own
    *cs.executeUpdate();
    *out.println("Name is : " + cs.getString(1));
    //this code is what is not working...hmm
    rs = cs.executeQuery();
    while(rs.next()){
    out.println(rs.getString("name"));
    rs.close();
    cs.close();
    //the rest of this works too.
    ConnectionFactory.releaseConnection(con);
    catch(SQLException e){
    out.println(e.getMessage());
    Here's the stored procedure. I'm just trying to do a simple test to return multiple rows. The table has numberous records with the same id which is being passed to the function.
    create or replace function test1 ( strInputID IN testtable.id%type)
    return varchar2
    is
    strOutputName testtable.name%type;
    found_it EXCEPTION;
    begin
    select name into strOutputName from testtable
    where id = strInputID;
    raise found_it;
    exception
    when no_data_found
    then
    return null;
    when found_it
    then
    return strOutputName;
    end;

    I've posted the code...it's doing a select. I think the problem is that to return multiple rows I need to return a cursor. But I've run into problems with both the MS and Oracle Drivers.
    All I really want to do is to query a database using a callable statement(function in oracle) which will return multiple rows which I can process. I have been trying to do this in a servlet.
    I can do it successfully for one column from one row, but not multiple columns from mulitple rows.
    I've been searchging for some good examples and am trying different things but can't seem to get it to work.

  • Error executing a callable statement on a pooled connection

    Hi,
    I have an Oracle function that returns a number:
    create or replace function
    S2B_STOP_STAGE (DOC_ID number, ST_ID number)
    return number ...
    and the following Java code:
    Class.forName("weblogic.jdbc.pool.Driver").newInstance();
    conn = DriverManager.getConnection("jdbc:weblogic:pool:madrigalPool");
    String sql = "{? = call S2B_STOP_STAGE(401,1002)}";
    CallableStatement stmt = conn.prepareCall(sql);
    stmt.registerOutParameter(1, Types.INTEGER);
    stmt.execute(sql);
    res = stmt.getInt(1);
    When the execute(sql) statement is executed, a SQLException is thrown:
    java.sql.SQLException: ORA-01008: not all variables bound
    at weblogic.jdbc.pool.PreparedStatement.execute(PreparedStatement.java:121)
    Does anybody have an idea about what may be wrong? I am using Oracle
    8.1.6, the thin driver classes12-81620.zip, and WebLogic 6.0 sp2.
    Thanks,
    Vladimir

    I found out what was wrong. I should have used execute() instead of execute(sql)
    on the callable statement...
    Sorry for the problem.
    Vladimir
    "vladimir" <[email protected]> wrote:
    >
    Hi,
    I have an Oracle function that returns a number:
    create or replace function
    S2B_STOP_STAGE (DOC_ID number, ST_ID number)
    return number ...
    and the following Java code:
    Class.forName("weblogic.jdbc.pool.Driver").newInstance();
    conn = DriverManager.getConnection("jdbc:weblogic:pool:madrigalPool");
    String sql = "{? = call S2B_STOP_STAGE(401,1002)}";
    CallableStatement stmt = conn.prepareCall(sql);
    stmt.registerOutParameter(1, Types.INTEGER);
    stmt.execute(sql);
    res = stmt.getInt(1);
    When the execute(sql) statement is executed, a SQLException is thrown:
    java.sql.SQLException: ORA-01008: not all variables bound
    at weblogic.jdbc.pool.PreparedStatement.execute(PreparedStatement.java:121)
    Does anybody have an idea about what may be wrong? I am using Oracle
    8.1.6, the thin driver classes12-81620.zip, and WebLogic 6.0 sp2.
    Thanks,
    Vladimir

  • Statement closed when using callable statements with oracle xe

    hi all, i've got this problem with oracle express edition 10g. I am using also oc4j v10.1.2.0.2. When working with a normal oracle database it was working fine (i think the code was the same, it's some time since i last tried, but you can see the code is very simple).
    So i just create a callable statement like this:
    CallableStatement cs = con.prepareCall(sentencia.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
    and then when trying to access the statement to register an out parameter like this
    cs.registerOutParameter(1, parámetros[0].getTipo());
    it gives this error:
    java.sql.SQLException: Statement was closed
    It's puzzling me because, as i said before, i think the same code was working ok with a normal oracle database.
    Any idea what can it be?
    cheers

    Ah okay, sorry I've re-read your post.
    I believe you need to create a clob object that encapsulates your xml file.
    I've never done this but I would image it involves creating a class that implements the clob interface and passing an instantiation of this class to the callablestatement.
    Let me know how you get on.

  • Callable Statement Exception

    Hi,
    I am very new to Java SQL Callable Statement.
    The following is the program that i wrote to execute a Stored Procedure stored in MS SQL Server 2000.
    In my program I am actually retrieving back the value that I've passed to the MS SQL Server.
    ========================================
    import java.sql.*;
    import java.sql.Types;
    public class CallableTester
         private Connection connection;
         public CallableTester(Connection conn)
              connection = conn;
         public void executeInsert ()
         CallableStatement stmt = null;
         String sqlstmt;
         int rows;
         try {
              sqlstmt = "{ ? = call product(?, ?, ?, ?) }";
              stmt = connection.prepareCall(sqlstmt);
              stmt.setString(1, "61");
              stmt.setString(2, "62");
              stmt.setString(3, "63");
              stmt.setString(4, "67");
              stmt.registerOutParameter(1, Types.VARCHAR);
              stmt.executeUpdate();
              connection.commit();
              System.out.println("The value inserted are " + stmt.getString(1));
              stmt.close();
              System.out.println(sqlstmt);
         catch (Exception e){
              e.printStackTrace();
    =========================================
    The is no syntax error.
    When I run the program, I've got the following exception
    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]COUNT field incorrect
    or syntax error
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6106)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6263)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:2567)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedState
    ment.java:217)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPrepare
    dStatement.java:139)
    at CallableTester.executeInsert(CallableTester.java:38)
    at DatabaseConnection.makeConnection(DatabaseConnection.java:22)
    at Start.main(Start.java:16)
    =========================================
    My database has a table named Product with the following fields and properties.
    Field id of type varchar
    Field name of type varchar
    Field costPrice of type decimal
    Field sellPrice of type decimal.
    =========================================
    The stored procedure for this table is
    CREATE PROCEDURE product @id varchar(8) = 8, @name varchar(50) = "productName", @costprice decimal = 88, @sellprice decimal =168 AS
    INSERT INTO PRODUCT VALUES(@id, @name, @costprice, @sellprice, @desc)
    GO
    =========================================
    Can anyone please to help me? I have been trying to solve this problem few days but I really can't.
    Your help will be appreciated.
    Thank you very much.

    I've reproduced your code with some modifications to make it work, I've tested it against a Sybase DB which is close enough to MS SQL Server.
    First the procedure. Note that I create and write to a temp table you can ignore this.
    create proc dmjtest
      @id varchar(8) = '8',
      @name varchar(50) = 'Dave Jenkins',
      @costPrice decimal = 1.23,
      @sellPrice decimal = 4.56
    as
    begin
      declare @rc int
      select @rc = 0
      create table #t (
        id varchar(8),
        name varchar(50),
        costPrice decimal,
        sellPrice decimal
      insert #t values (@id, @name, @costPrice, @sellPrice)
      if @@error = 0 select @rc = 1
      drop table #t
      return @rc
    endNow for the java code
    import java.sql.*;
    import java.sql.Types;
    public class CallableTester
      private Connection connection;
      public CallableTester(Connection conn) {
        connection = conn;
      public void executeInsert () {
        CallableStatement stmt = null;
        String sqlstmt;
        int rows;
        try {
          stmt = connection.prepareCall("{ ? = call dmjtest(?, ?, ?, ?) }");
          stmt.registerOutParameter(1, Types.INTEGER);
          stmt.setString(2, "1");
          stmt.setString(3, "product 1");
          stmt.setDouble(4, 63.0);
          stmt.setDouble(5, 67.0);
          stmt.executeUpdate();
          connection.commit();
          System.out.println("The return value is " + stmt.getInt(1));
          stmt.close();
        catch (Exception e){
          e.printStackTrace();
    }

  • Help with Callable Statements

    Hi,
    I am working on a problem which requires me to insert record into the database (mySQL) using Callable Statements.
    For this I have written 2 Stored Procedures (SP) which are as follows:
    CREATE DEFINER=`root`@`localhost` PROCEDURE `GeneratePcId`()
    BEGIN
    select max(pc_id)+1 from price;
    END $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertPrice`(pc_id INT, pc_level INT, price INT, from_date DATE, to_date DATE)
    BEGIN
    INSERT INTO price VALUES (pc_id, pc_level, price, from_date, to_date);
    END $$
    The frist SP returns a number that adds 1 to the max of pc_id column which is the PK and max means the last row value.
    This value I want to use as a value for inserting the new row into the table. I have worked on this and the program chunk is here:
               // Create CallableStatement object 
                CallableStatement genid = conn.prepareCall("{? = call GeneratePcId()}");
                genid.registerOutParameter(1, Types.INTEGER);
                //ResultSet rs = (ResultSet)genid.executeQuery();
                //rs.next();
                genid.executeUpdate();
                int number = genid.getInt(1);
                CallableStatement cstmt = conn.prepareCall("{call InsertPrice (?, ?, ?, ?, ?)}");     
                // Bind values to the parameters           
                cstmt.setInt(1, number );           
                cstmt.setInt(2, 8);           
                cstmt.setInt(3, 600);           
                cstmt.setDate(4, Date.valueOf("2008-01-01"));           
                cstmt.setDate(5, Date.valueOf("2008-02-02"));       But when I run this program I get the following error:
    java.lang.NullPointerException at com.mysql.jdbc.CallableStatement$CallableStatementParamInfo.iterator(CallableStatement.java:324)
    at com.mysql.jdbc.CallableStatement.setInOutParamsOnServer(CallableStatement.java:1938)
    at com.mysql.jdbc.CallableStatement.execute(CallableStatement.java:749)
    at com.mysql.jdbc.CallableStatement.executeUpdate(CallableStatement.java:808)
    at CallableStatementExercise.query(CallableStatementExercise.java:36)
    at CallableStatementExercise.main(CallableStatementExercise.java:13)
    Line 13 points to genid.executeUpdate();
    Can anybody please advise me what the problem is?
    Shall be really grateful.
    Templar_Knight
    Message was edited by:
    templar_knight

    mervin,
    Find the following sample code regarding your issue,
    CallableStatement cstmt = (java.sql.Connection).prepareCall("{call getTestData(?)}");
                   cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
                   cstmt.registerOutParameter(2, java.sql.Types.DECIMAL);
                   ResultSet rs = cstmt.executeQuery();
    //. . . retrieve result set values with rs.getter methods
                   java.lang.Integer x = cstmt.getInt(1);
                   java.math.BigDecimal n = cstmt.getBigDecimal(2);
    I think your issue is resolved.

  • Naming the parameters of a callable statement

    Hi!
    I am having some kind of a problem here. I am currently working on a software with a database.OK, simple.
    The problem is that we have different kind of databases (oracle, Sybase, DB2) AND different schema!
    We are obviously trying to keep the persistence layer as cut from the rest as possible.
    The problem is that in some cases, we may call a callable statement but the actual callable statement in the database is not the same as the one that would be called in a similar case with another schema.
    Therefore, we are looking for a way to set the parameters of a callable statement by a name, not an index.
    Instead of
    setString(1,"aValue");
    some
    setString("FirstParameter", "aValue");
    PLease help!
    Cheers!
    Chris

    I think there is a driver that does that.Thanks for replying so quickly, could you tell me what
    that driver would be ?Like I said I don't think it is going to help because it is for a specific data base. I you need to support more than one.
    I think it is either Oracle (if you use the Oracle specific JDBC classes - cast to them) or one of the third party drivers.
    >
    I was thinking of the wrapper too but I, as the
    (different)schemas are still changing and the callable
    statement too, I think it will be very error prone
    during the developpement cycle.
    So I'd like to avoid to have to maintain a
    "correspondance table" between each callable statement
    and it's parameters...
    And that is my idea. Developement cycles are always error prone so I am not sure that it matters.

  • How to return Multiple ResultSets Using Callable Statement

    hi everybody,
    while i was working with callable statements i came across a problem of how to fetch Multiple Resultsets by means of Stored Procedures written for tables in Oracle.
    If any one can help me, pls do help me with a detailed explanation, and if possible do get me a example source code too.
    khumaar

    I have a similar problem with oracle and jdbc:
    I want to send a sql query like:
    sqlQuery = "select n1, n2 from table1; select n1, n2
    from table2"
    I used a prepared statement, but when I call
    .execute(sqlQuery)
    oracle doesn't like this,
    can someone help on this?Try putting a begin/end around it. Play with the syntax first in sqlplus.
    You do realize that you MUST extract using the syntax for extracting multiple result sets correct? It will NOT work as one result set.

  • Return records from Stored Procedure to Callable Statement

    Hi All,
    I am createing a web application to display a students score card.
    I have written a stored procedure in oracle that accepts the student roll number as input and returns a set of records as output containing the students scoring back to the JSP page where it has to be put into a table format.
    how do i register the output type of "records" from the stored function in oracle in the "registerOutParameter" method of the "callable" statement in the JSP page.
    if not by this way is there any method using which a "stored function/procedure" returning "record(s)" to the jsp page called using "callable" statement be retrieved to be used in the page. let me know any method other that writing a query for the database in the JSP page itself.

    I have a question for you:
    If the stored procedure is doing nothing more than generating a set of results why are you even using one?
    You could create a view or write a simple query like you mentioned.
    If you're intent on going the stored procedure route, then I have a suggestion. Part of the JDBC 2.0 spec allows you to basically return an object from a CallableStatement. Its a little involved but can be done. An article that I ran across a while back really helped me to figure out how to do this. There URL to it is as follows:
    http://www.fawcette.com/archives/premier/mgznarch/javapro/2000/03mar00/bs0003/bs0003.asp
    Pay close attention to the last section of the article: Persistence of Structured Types.
    Here's some important snippets of code:
    String UDT_NAME = "SCHEMA_NAME.PRODUCT_TYPE_OBJ";
    cstmt.setLong(1, value1);
    cstmt.setLong(2, value2);
    cstmt.setLong(3, value3);
    // By updating the type map in the connection object
    // the Driver will be able to convert the array being returned
    // into an array of LikeProductsInfo[] objects.
    java.util.Map map = cstmt.getConnection().getTypeMap();
    map.put(UDT_NAME, ProductTypeObject.class);
    super.cstmt.registerOutParameter(4, java.sql.Types.STRUCT, UDT_NAME);
    * This is the class that is being mapped to the oracle object. 
    * There are two methods in the SQLData interface.
    public class ProductTypeObject implements java.sql.SQLData, java.io.Serializable
        * Implementation of method declared in the SQLData interface.  This method
        * is called by the JDBC driver when mapping the UDT, SCHEMA_NAME.Product_Type_Obj,
        * to this class.
        * The object being returned contains a slew of objects defined as tables,
        * these are retrieved as java.sql.Array objects.
         public void readSQL(SQLInput stream, String typeName) throws SQLException
            String[] value1 = (String[])stream.readArray().getArray();
            String[] value2 = (String[])stream.readArray().getArray();
         public void writeSQL(SQLOutput stream) throws SQLException
    }You'll also need to create Oracles Object. The specification for mine follows:
    TYPE Detail_Type IS TABLE OF VARCHAR2(1024);
    TYPE Product_Type_Obj AS OBJECT (
      value1  Detail_Type,
      value2 Detail_Type,
      value3 Detail_Type,
      value4 Detail_Type,
      value5 Detail_Type,
      value6 Detail_Type,
      value7 Detail_Type,
      value8 Detail_Type);Hope this helps,
    Zac

  • Problem with READ Statement in the field routine of the Transformation

    Hi,
    I have problem with read statement with binary search in the field routine of the transformation.
    read statement is working well when i was checked in the debugging mode, it's not working properly for the bulk load in the background. below are the steps i have implemented in my requirement.
    1. I selected the record from the lookuo DSO into one internal table for all entried in source_packeage.
    2.i have read same internal table in the field routine for each source_package entry and i am setting the flag for that field .
    Code in the start routine
    select source accno end_dt acctp from zcam_o11
    into table it_zcam
    for all entries in source_package
    where source = source_package-source
         and accno = source_package-accno.
    if sy-subrc = 0.
    delete it_zcam where acctp <> 3.
    delete it_zcam where end_dt initial.
    sort it_zcam by surce accno.
    endif.
    field routine code:
    read table it_zcam with key source = source_package-source
                                                 accno  = source_package-accno
                                                 binary search
                                                 transportin no fields.
    if sy-subrc = 0.
    RESULT  = 'Y'.
    else.
    RESULT = 'N'.
    endif.
    this piece of code exist in the other model there its working fine.when comes to my code it's not working properly, but when i debug the transformation it's working fine for those accno.
    the problem is when i do full load the code is not working properly and populating the wrong value in the RESULT field.
    this field i am using in the report filter.
    please let me know if anybody has the soluton or reason for this strage behaviour.
    thanks,
    Rahim.

    i suppose the below is not the actual code. active table of dso would be /bic/azcam_o1100...
    1. is the key of zcam_o11 source and accno ?
    2. you need to get the sortout of if endif (see code below)
    select source accno end_dt acctp from zcam_o11
    into table it_zcam
    for all entries in source_package
    where source = source_package-source
    and accno = source_package-accno.
    if sy-subrc = 0.
    delete it_zcam where acctp 3.
    delete it_zcam where end_dt initial.
    endif.
    sort it_zcam by surce accno.
    field routine code:
    read table it_zcam with key source = source_package-source
    accno = source_package-accno
    binary search
    transportin no fields.
    if sy-subrc = 0.
    RESULT = 'Y'.
    else.
    RESULT = 'N'.
    endif.

  • How to get the returned value from Functions with Callable statement?

    I was glad to find that stored procedures can be invoke with Java class code by the object of Callable statement like :
    String stmt = "BEGIN departments_pkg.do_select(?,?,?); END;";
    and getting the output variables by
    populateAttribute(DEPARTMENTNAME,st.getString(2),true,false);
    But i would like to get values returned from FUNCTION other than stored procedure, how can i achieve it? Thanks a lot!

    Here is  my code
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_1202.
      MODULE subscreen_find.
      CALL SUBSCREEN SUBSEARCH INCLUDING sy-cprog dynnr.
    PROCESS AFTER INPUT.
      MODULE USER_COMMAND_1202.
      CALL SUBSCREEN SUBSEARCH.
    MODULE subscreen_find.
      case sy-ucomm.
        when 'SELECTED'.             "fcode
          case 'ZSKILL_SEARCH'.     "data element
            when '01'.                       " value range
              dynnr = 0110.
            when '02'.
              dynnr = 0111.
          endcase.
      endcase.
    ENDMODULE.
    kindly tell me what is wrong
    Edited by: Raji Thomas on Feb 8, 2010 10:20 AM

Maybe you are looking for

  • What is the scope of implicit loop variables?

    Hi, I'm facing some strange error from the ABSL editor (syntax checker). In ABSL the loop variables are implicit and don't have to be declared in the head section of the script. My question now is simple: How is the scope/visibility of such loop vari

  • How do i install lightroom 4 with no cd drive on my macbook pro

    How do I install Lightroom 4 on my Macbook Pro????  There's no cd drive.  Is there a link from the website where I can download the software?

  • How to separate notification worklist based on Item type by Responsibility

    Hi, I have few custom workflows which puts the notification to the Universal Workflow worklist in Oracle apps R12. This worklist includes the custom workflow as well as the standard workflows. Is there anyway we could separate the notifications workl

  • Error running Java after first time installation on shared server

    Hello, I have just installed jre1.6.0_21 for the first time in my home folder on a shared Linux server. I am logged onto the server, so I am acting as the localhost. I get the following error when running java -version: Error occurred during initiali

  • Who is in a group call?

    Simply put, is there a way to see who is currently in a group call that's going on without joining it? I know that on the MAC platform just by clicking on the group you can see who's in it, but it doesn't seem that there is a function like that on wi