JVM hangs while executing  a sql query

My JVM hangs while I try to execute an update query. I am using JDBC thin client and Oracle 9i as database. Can someone please suggest what could be wrong.

I have a serious problem regarding the usage of Prepared Statement.
I am working on J2EE based application with the application server as Oracle 9ias.We have mostly used Prepared in 0ur queries.But one our application got implemented we are facing some strange problems.The first instance was a web page was getting hanged and does not give any results.But this had worked fine in all our testing environment.We analysed the table which it uses and still no result.Finally we changed prepared statement to statement and the result page came within seconds.
The second instance is the main issue.Again a query is getting hanged when we try to process it through the web page.We again tested it by converting from prepared statement to statement and its coming within seconds.
Can someone give me some input.Is there any databse parameter that is controlling this prepared statement or statement.

Similar Messages

  • Error while executing a sql query for select

    HI All,
    ORA-01652: unable to extend temp segment by 128 in tablespace PSTEMP i'm getting this error while i'm executing the sql query for selecting the data.

    I am having 44GB of temp space, while executing the below query my temp space is getting full, Expert please let us know how the issue can be resolved..
    1. I dont want to increase the temp space
    2. I need to tune the query, please provide your recomendations.
    insert /*+APPEND*/ into CST_DSA.HIERARCHY_MISMATCHES
    (REPORT_NUM,REPORT_TYPE,REPORT_DESC,GAP,CARRIED_ITEMS,CARRIED_ITEM_TYPE,NO_OF_ROUTE_OF_CARRIED_ITEM,CARRIED_ITEM_ROUTE_NO,CARRIER_ITEMS,CARRIER_ITEM_TYPE,CARRIED_ITEM_PROTECTION_TYPE,SOURCE_SYSTEM)
    select
    REPORTNUMBER,REPORTTYPE,REPORTDESCRIPTION ,NULL,
    carried_items,carried_item_type,no_of_route_of_carried_item,carried_item_route_no,carrier_items,
    carrier_item_type,carried_item_protection_type,'PACS'
    from
    (select distinct
    c.REPORTNUMBER,c.REPORTTYPE,c.REPORTDESCRIPTION ,NULL,
    a.carried_items,a.carried_item_type,a.no_of_route_of_carried_item,a.carried_item_route_no,a.carrier_items,
    a.carrier_item_type,a.carried_item_protection_type,'PACS'
    from CST_ASIR.HIERARCHY_asir a,CST_DSA.M_PB_CIRCUIT_ROUTING b ,CST_DSA.REPORT_METADATA c
    where a.carrier_item_type in('Connection') and a.carried_item_type in('Service')
    AND a.carrier_items=b.mux
    and c.REPORTNUMBER=(case
    when a.carrier_item_type in ('ServicePackage','Service','Connection') then 10
    else 20
    end)
    and a.carrier_items not in (select carried_items from CST_ASIR.HIERARCHY_asir where carried_item_type in('Connection') ))A
    where not exists
    (select *
    from CST_DSA.HIERARCHY_MISMATCHES B where
    A.REPORTNUMBER=B.REPORT_NUM and
    A.REPORTTYPE=B.REPORT_TYPE and
    A.REPORTDESCRIPTION=B.REPORT_DESC and
    A.CARRIED_ITEMS=B.CARRIED_ITEMS and
    A.CARRIED_ITEM_TYPE=B.CARRIED_ITEM_TYPE and
    A.NO_OF_ROUTE_OF_CARRIED_ITEM=B.NO_OF_ROUTE_OF_CARRIED_ITEM and
    A.CARRIED_ITEM_ROUTE_NO=B.CARRIED_ITEM_ROUTE_NO and
    A.CARRIER_ITEMS=B.CARRIER_ITEMS and
    A.CARRIER_ITEM_TYPE=B.CARRIER_ITEM_TYPE and
    A.CARRIED_ITEM_PROTECTION_TYPE=B.CARRIED_ITEM_PROTECTION_TYPE
    AND B.SOURCE_SYSTEM='PACS'
    Explain Plan
    ==========
    Plan
    INSERT STATEMENT ALL_ROWSCost: 129 Bytes: 1,103 Cardinality: 1                                                        
         20 LOAD AS SELECT CST_DSA.HIERARCHY_MISMATCHES                                                   
              19 PX COORDINATOR                                              
                   18 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10002 :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1                                         
                        17 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1                                    
                             15 HASH JOIN RIGHT ANTI NA PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,098 Cardinality: 1                               
                                  4 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 63 Bytes: 359,283 Cardinality: 15,621                          
                                       3 PX SEND BROADCAST PARALLEL_TO_PARALLEL SYS.:TQ10001 :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621                     
                                            2 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621                
                                                 1 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621           
                                  14 NESTED LOOPS ANTI PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 40,256,600 Cardinality: 37,448                          
                                       11 HASH JOIN PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 6,366,160 Cardinality: 37,448                     
                                            8 BUFFER SORT PARALLEL_COMBINED_WITH_CHILD :Q1002               
                                                 7 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 1 Bytes: 214 Cardinality: 2           
                                                      6 PX SEND BROADCAST PARALLEL_FROM_SERIAL SYS.:TQ10000 Cost: 1 Bytes: 214 Cardinality: 2      
                                                           5 INDEX FULL SCAN INDEX CST_DSA.IDX$$_06EF0005 Cost: 1 Bytes: 214 Cardinality: 2
                                            10 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448                
                                                 9 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448           
                                       13 TABLE ACCESS BY INDEX ROWID TABLE PARALLEL_COMBINED_WITH_PARENT CST_DSA.HIERARCHY_MISMATCHES :Q1002Cost: 0 Bytes: 905 Cardinality: 1                     
                                            12 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT SYS.HIERARCHY_MISMATCHES_IDX3 :Q1002Cost: 0 Cardinality: 1                
                             16 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT CST_DSA.IDX$$_06EF0001 :Q1002Cost: 1 Bytes: 5 Cardinality: 1

  • ORA-03113 : end-of-file on communication channel while running a SQL Query

    Hi,
    While executing the following query, we are facing ORA-03113 : EOF on communication channel error.
    SELECT
    FROM QDF_CLSS_SHENG_HIST
    /*WHERE* a.FACT_TYPE_CODE='BS'
    AND */
    WHERE (SRCE_SYS_ID = 850 OR (SRCE_SYS_ID IN (1747,1764) AND GEO_ID IN (826,372) AND PRTTN_BY_FUNC_DATE>=to_date('20060701','YYYYMMDD') ))
    When we remove one of the values in the SRCE_SYS_ID's 'IN' condition the error is not thrown, e.g.
    WHERE (SRCE_SYS_ID = 850 OR (SRCE_SYS_ID IN (1747) AND GEO_ID IN (826,372) AND PRTTN_BY_FUNC_DATE>=to_date('20060701','YYYYMMDD') ))
    The version of the Database we are using is 10.2.0.3.0 - 64bi. Is this a common error in this version of the database because when we ran the same query in a 9i database we got no such error.
    P.S : QDF_CLSS_SHENG_HIST table is partitioned on SRCE_SYS_ID and PRTTN_BY_FUNC_DATE
    Thanks,
    Puneeth

    Yes, we get the same error and no dumps are getting created.It might be interesting to look at a trace file for this SQL statement with event 10046 at level 12 and event 10053 at level 1 enabled for the session. You may need to modify the query slightly to make certain that a hard parse is required (possibly by specifying a couple of the column names to be returned rather than *). Take a look through the raw trace file for something like this
    cost: -1.#IND  card: 1.#INFThere is at least one query in the ERP package that I use that will output the following in a 10053 trace when optimizer_features_enable is greater than 10.1.0.4, followed by an ORA-600:
      Access Path: index (AllEqUnique)
        Index: SYS_C004588
        resc_io: 1.00  resc_cpu: 8341
        ix_sel: 0.5  ix_sel_with_filters: 0.5
        NL Join: Cost: 1.#J  Resp: 1.#J  Degree: 1
          Cost_io: 1.#J  Cost_cpu: 1
          Resp_io: 1.#J  Resp_cpu: 1
      Best NL cost: 1797693134862315700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000.00
              resc: 3.01 resc_io: 3.00 resc_cpu: 35947
              resp: 3.01 resp_io: 3.00 resp_cpu: 35947
    Outer Join Card:  1.#J = max ( outer (1.#J), (outer (1.#J) * inner (2.00) * sel (0.5) )
    Join Card - Rounded: 1 Computed: 1.#JYou may be experiencing a similar problem that might become evident with both trace events enabled.
    Charles Hooper
    IT Manager/Oracle DBA
    K&M Machine-Fabricating, Inc.

  • How to execute a sql query in VO????

    Hi every body.
    Can you show me the way to execute a sql query in VO.
    For example: I have a viewobject1, and I add a new method void execSQL() before the last '}' of the java file of viewobject1 like this:
    public void execSQL() {
    String strSql = "Select sysdate from dual";
    I want to execute strSql query and return a Resultset, how can I perform ???
    Thanks a lot.

    The executeQuery method in ViewObjectImpl does not return a ResultSet.
    ViewObjectImpl voImpl;
    voImpl.setQuery(strSql);
    voImpl.executeQuery();

  • Error while executing the workbook query.

    Hi guyz
    i'm getting an error while executing the workbook Query. The actual problem is there is a filter for REQUID in the query definition for removing the doble count. there is customer exit written. the report works fine in DEVELOPMENT but it is not working in quality.
    The query on which this workbook is created is working fine, but the problem is when we execute the workbook i'm facing this issue.
    we re-transported the queries but still we are facing the same problem.
    while we execute the query we are prompted for variable entry(Optional) for date. when we press OK we get the below error
    " NO SID value found for the value REQU_4DQT75Y2RJPVT4PXZ4LHC70V3 of characteristic"
    the request is not available in the BW system. the request was deleted long back, but it is still referring to the same the request id
    could someone please tell me where we went wrong and why we are getting this error.
    Regards,
    Anil Vadde

    Hey ,I think data load to your target on which the query was based had some issue.
    Can you check the data load to the data target.change the status of request concerned to red and delete.do reconstruct if neeed..I think the request had some issue.
    Even you can go to RSRQ or RSMO and filter on the basis of this request and see its status.
    Regards,
    RK

  • Error while executing report in query designer

    Dear Folks,
    I am geting following error while executing report in query designer.
    Error:500 E
    an exception raised because of 0analysis pattern.
    Hence,i am unable to execute any report.
    Need help.
    Thanks

    Hi Kitu G,
    I think this is something to do with the bex web 0ANALYSIS* objects not being installed in your BW system.
    I would try and do the following:
    - Goto RSA1 > BI Content > BEx Web Template (BTMP)
    - Then double-click on Select Object.
    - Highlight all objects that start with 0ANALYSIS_PATTERN
    - Click on Transfer Selections, and then Install.
    If you can't do the above in prd, do it in DEV, then transport the objects to prd.
    After all this, try re-running your queries.
    Any questions/clarification just let me know
    Cheers.
    Darwin

  • How to execute an SQL query present in a string inside an ABAP program?

    hello,
    How to execute an SQL query present in a string inside an ABAP program

    Raut,
    You can execute Native SQl statements.
    Ex: To use a Native SQL statement, you must precede it with the EXEC SQL statement, and follow it with the ENDEXEC statement as follows:
    EXEC SQL [PERFORMING <form>].
      <Native SQL statement>
    ENDEXEC.
    There is no period after Native SQL statements. Furthermore, using inverted commas (") or an asterisk (*) at the beginning of a line in a native SQL statement does not introduce a comment as it would in normal ABAP syntax. You need to know whether table and field names are case-sensitive in your chosen database.
    In Native SQL statements, the data is transported between the database table and the ABAP program using host variables. These are declared in the ABAP program, and preceded in the Native SQL statement by a colon (:). You can use elementary structures as host variables. Exceptionally, structures in an INTO clause are treated as though all of their fields were listed individually.
    If the selection in a Native SQL SELECT statement is a table, you can pass it to ABAP line by line using the PERFORMING addition. The program calls a subroutine <form> for each line read. You can process the data further within the subroutine.
    As in Open SQL, after the ENDEXEC statement, SY-DBCNT contains the number of lines processed. In nearly all cases, SY-SUBRC contains the value 0 after the ENDEXEC statement. Cursor operations form an exception: After FETCH, SY-SUBRC is 4 if no more records could be read. This also applies when you read a result set using EXEC SQL PERFORMING.
    EXEC SQL PERFORMING loop_output.
      SELECT connid, cityfrom, cityto
      INTO   :wa
      FROM   spfli
      WHERE  carrid = :c1
    ENDEXEC.
    Pls. Mark If useful

  • How to execute this SQL Query in ABAP Program.

    Hi,
    I have a string which is the SQL Query.
    How to execute this sql Query (SQL_STR) in ABAP Program.
    Code:-
    DATA: SQL_STR type string.
    SQL_STR = 'select * from spfli.'.
    Thanks in Advance,
    Vinay

    Hi Vinay
    Here is a sample to dynamically generate a subroutine-pool having your SQL and calling it.
    REPORT dynamic_sql_example .
    DATA: BEGIN OF gt_itab OCCURS 1 ,
    line(80) TYPE c ,
    END OF gt_itab .
    DATA gt_restab TYPE .... .
    DATA gv_name(30) TYPE c .
    DATA gv_err(120) TYPE c .
    START-OF-SELECTION .
    gt_itab-line = 'REPORT generated_sql .' .
    APPEND gt_itab .
    gt_itab-line = 'FORM exec_sql CHANGING et_table . ' .
    APPEND gt_itab .
    gt_itab-line = SQL_STR .
    APPEND gt_itab .
    gt_itab-line = 'ENDFORM.' .
    APPEND gt_itab .
    GENERATE SUBROUTINE POOL gt_itab NAME gv_name MESSAGE gv_err .
    PERFORM exec_sql IN PROGRAM (gv_name) CHANGING gt_restab
    IF FOUND .
    WRITE:/ gv_err .
    LOOP AT gt_result .
    WRITE:/ .... .
    ENDLOOP .
    *--Serdar

  • ORA-06550 error while executing Dynamic Sql

    EXECUTE IMMEDIATE 'BEGIN :out := ' || lv_formula || '; END;' using out RESULT ;
    here lv_formula:= ((capcost * rate / 100) + (ob + (ob * interestrate / 100)))
    lv_formula is varchar2(360);
    and capcost,rate,ob & interestrate are my column names . Here I m declaring variables same as these columns and datatype is number.
    I am not getting any compilation error. syntax is correct
    while executing this sql i m getting ora-06550.
    can any one help me for resolving this error.
    Thanks In Advance
    hoping for more respose

    Thanks Billy for your response,
    but i still didn't get my desired solution so i am pasting my whole plsql code here. so that u can get better picture.
    /* Formatted on 2010/11/22 15:23 (Formatter Plus v4.8.5) */
    PROCEDURE xb (
    l_refno IN VARCHAR2,
    l_billtyp IN VARCHAR2,
    infor IN VARCHAR2,
    aresult OUT NUMBER
    IS
    --A NUMBER:=10; B NUMBER :=5;
    lv_formula VARCHAR2 (270); --:=(A+B)*2+5;
    l_agtmnt VARCHAR2 (18);
    l_type VARCHAR2 (2);
    RESULT NUMBER;
    refno afxbrmst.refno%TYPE;
    billtyp afxbrmst.billtyp%TYPE;
    ob afxbrmst.ob%TYPE;-- := 45283;
    status afxbrmst.status%TYPE -- := 0;
    dueamt afxbrmst.dueamt%TYPE -- := 0;
    duedate afxbrmst.duedate%TYPE;
    frequency afxbrmst.frequency%TYPE;
    lastrevrate afxbrmst.lastrevrate%TYPE -- := 0;
    penaltyamt afxbrmst.penaltyamt%TYPE -- := 0;
    accounted afxbrmst.accounted%TYPE;
    lastbillraised afxbrmst.lastbillraised%TYPE;
    noofstaff afxbrmst.noofstaff%TYPE;
    items afxbrmst.items%TYPE;
    area afxbrmst.area%TYPE;
    LENGTH afxbrmst.LENGTH%TYPE -- := 0;
    interest afxbrmst.interest%TYPE -- := 0;
    capcost NUMBER; afxbrmst.capcost%TYPE; :=1;
    -- := 1509432;
    periodfrom afxbrrate.periodfrom%TYPE;
    periodto afxbrrate.preiodto%TYPE;
    rcsrate afxbrrate.rcsrate%TYPE -- := 0;
    length_area afxbrrate.length_area%TYPE;
    rate afxbrrate.rate%TYPE --:= 0;
    -- :=3;
    erate afxbrrate.erate%TYPE -- := 0;
    feamount afxbrrate.feamount%TYPE -- := 0;
    interestrate afxbrrate.interestrate%TYPE -- := 0;
    -- :=12;
    fiamount afxbrrate.fiamount%TYPE --:= 0;
    penaltyrate afxbrrate.penaltyrate%TYPE -- := 0;
    l_ob afxbrmst_test.ob%TYPE -- := 0;
    l_capcost afxbrmst.capcost%TYPE -- := 0;
    raise_application_trigger EXCEPTION;
    inti INTEGER;
    BEGIN
    --break;
    lv_formula :=
    TO_NUMBER ((capcost * rate / 100) + (ob + (ob * interestrate / 100)));
    --infor;
    l_agtmnt := l_refno;
    l_type := l_billtyp;
    BEGIN
    SELECT a.refno, a.billtyp, a.ob, a.status, a.dueamt, a.duedate,
    a.frequency, a.lastrevrate, a.penaltyamt, a.accounted,
    a.lastbillraised, a.noofstaff, a.items, a.area, a.LENGTH,
    a.interest, a.capcost
    INTO refno, billtyp, ob, status, dueamt, duedate,
    frequency, lastrevrate, penaltyamt, accounted,
    lastbillraised, noofstaff, items, area, LENGTH,
    interest, capcost
    FROM afxbrmst_test a
    WHERE billtyp = l_type AND refno = l_agtmnt;
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    NULL;
    END;
    BEGIN
    SELECT b.periodfrom, b.preiodto, b.rcsrate, b.length_area, b.rate,
    b.erate, b.feamount, b.interestrate, b.fiamount, b.penaltyrate
    INTO periodfrom, periodto, rcsrate, length_area, rate,
    erate, feamount, interestrate, fiamount, penaltyrate
    FROM afxbrrate b
    WHERE billtype = l_type;
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    NULL;
    END;
    EXECUTE IMMEDIATE 'BEGIN :out := ' || lv_formula || '; END;'
    USING OUT RESULT; --USING OUT RESULT;
    aresult := RESULT;
    END;
    -- Procedure
    here i m passing the parameter through my form builder and calling this procedure.
    can you tell me where i am making wrong
    Thanks again

  • Submit button executes a sql query

    In my servlet I'd like to create a submit button, and when it is clicked I want to execute an sql query.
    For example;
    If I write a name; I want to add that name to my table in my database.
    Could you give an example please?
    Thank you

    PreparedStatement ps = con.prepareStatement("insert into foo (name, birthdate) values (?, ?)"); // double check my sql insert syntax. I'm not sure if it's right.
    String theName = ...; // get name from what user enters
    Date theBirthDate =...; // likewise birthdate
    ps.setString(1, theName);
    ps.setDate(2, theBirthDate);
    ps.executeUpdate(); Look at the APIs or google for java preparedstatement tutorial or something for more info.

  • Execute custom SQL query in OIM11g

    Hi,
    Can you please provide me some java code snippet to execute a custom sql query and also to get db connection to execute this query in OIM 11g. I am going to run this query in an adapter.
    Thanks a lot for ur help.
    Mike

    Hey Mike,
    Use the below sample code to get db connection and then to execute a query in OIM11g.
    String query = "SELECT UD_ADUSER_EMAIL FROM UD_ADUSER WHERE upper(UD_ADUSER_UID) like '%TESTU%'";
    Connection con = Platform.getOperationalDS().getConnection();
    PreparedStatement preparedStatement = con.prepareStatement(query);
    ResultSet resultSet = preparedStatement.executeQuery();
    while(resultSet.next())
    System.out.println("Output:"+resultSet.getString(1));
    }

  • OCI crash while executing PL/SQL

    HI,
    I have a multithreaded application which uses OCI. The application has a master thread and spwans 4 child threads that connect to the db and execute specific queries. The problem occurs while trying to execute the last PL/SQL command which includes some bfile operations. I had read that OCI does not mutex properly on LOB operations, but I do not get any error, the application just hangs. Attached is part of the code that has all OCI calls.
    The culprit is the update_tables function. The application hangs in there when processing is very close in time for threads.
    [] 20080411 10:40:52.255 Oracle NOTICE - [2000][id 1093229] Executing PL/SQL to update all tables
    [] 20080411 10:40:52.259 Oracle NOTICE - [2000][id 1093230] Executing PL/SQL to update all tables
    [] 20080411 10:40:52.321 Oracle NOTICE - [2000][id 1093231] Executing PL/SQL to update all tables
    this is where is hangs.
    //!This program is the server portion of the distributed job system.
    #include "application.h"
    #include "log4cwrapper.h"
    //#include "sql.h"
    #include <oci.h>
    OCIEnv*            env;
    int main(int argc, char* argv[]){
         OCIError*     err;
         OCIServer*    srv;
         OCISvcCtx*    svc;
         OCISession*   ses;
         sword r;
         OCIStmt*       initslc;
         OCIStmt*       comm;
         OCIBind      *bnd1hp = (OCIBind*) 0;
         char stmt[]="commit";
         char update_initial[] ="update CONV_IMAGE_JOBS set conv_attempts_cnt = :1";
         FILE *log_fd_main;
         int sockfd, logfd, pidfd, count = 0, oci_error = 0;
         pthread_t job_thread;               //!<Threads for image conversion
        pthread_attr_t thread_attr;          //!<Thread attribute
        int *clientfd;                         //!<Non-negative file descriptor for new socket
        pthread_mutexattr_t mattr;          //!<Mutex attribute used to set the properties of the mutex
         char masterpid[100];
         log_fd_main = fopen(log_file, "a");
         if (log_fd_main == NULL) {
              printf(" ERROR - DjsMaster [0002] Failed to open log file.\n");
            exit(1);
        r=OCIEnvCreate( &env,
              OCI_THREADED
             , 0, 0, 0, 0, 0, 0);
        if (r != OCI_SUCCESS) {
              strcpy(err_msg,"Couldn't create environment (OCIEnvCreate)");
              oci_error = 1;
              cleanup();
         OCIHandleAlloc(env, (dvoid**)&err, OCI_HTYPE_ERROR,   0, 0);
         OCIHandleAlloc(env, (dvoid**)&srv, OCI_HTYPE_SERVER,  0, 0);
         OCIHandleAlloc(env, (dvoid**)&svc, OCI_HTYPE_SVCCTX,  0, 0);
         OCIHandleAlloc(env, (dvoid**)&ses, OCI_HTYPE_SESSION, 0, 0);
         r=OCIServerAttach(srv, err, dbname, strlen((const char*)dbname), (ub4) OCI_DEFAULT);
         if (r != OCI_SUCCESS) {
              checkerrr(err, r, err_msg);
              oci_error = 1;
              cleanup();
         OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER,  err);
         OCIAttrSet(ses, OCI_HTYPE_SESSION, username,
                strlen((const char*)username), OCI_ATTR_USERNAME, err);
         OCIAttrSet(ses, OCI_HTYPE_SESSION, password,
                strlen((const char*)password), OCI_ATTR_PASSWORD, err);
         if ( (r=OCIAttrSet((dvoid *) svc, (ub4) OCI_HTYPE_SVCCTX,
                (dvoid *) ses, (ub4) 0, (ub4) OCI_ATTR_SESSION, err)) ) {
              checkerrr(err, r,err_msg);
              oci_error = 1;
              cleanup();
         r=OCISessionBegin (svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);
         if (r != OCI_SUCCESS) {
              checkerrr(err, r,err_msg);
              oci_error = 1;
              cleanup();
         if (OCIHandleAlloc((dvoid *) env, (dvoid **) &initslc,
                (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
         if ((r=OCIStmtPrepare(initslc, err, (text*)(void*)update_initial,
                (ub4) strlen((char *) update_initial),
                (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))) {
              checkerrr(err, r, (text*)err_msg);
              OCIHandleFree((dvoid *) initslc, (ub4) OCI_HTYPE_STMT);
              oci_error = 1;
              cleanup();
         int coun=0;
         if ((r = OCIBindByPos(initslc, &bnd1hp, err, (ub4) 1, &coun, sizeof(count), SQLT_INT,
                                 (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT))){
               checkerrr(err, r, (text*)err_msg);
            oci_error = 1;
              cleanup();
         if ((r = OCIStmtExecute(svc, initslc, err, (ub4) 1, (ub4) 0, (CONST OCISnapshot *) 0,
                                   (OCISnapshot *) 0, (ub4) OCI_DEFAULT))){
              checkerrr(err, r, (text*)err_msg);
             OCIHandleFree((dvoid *) sh, (ub4) OCI_HTYPE_STMT);
             oci_error = 1;
               cleanup();
         if ((r=OCIHandleAlloc((dvoid *) env, (dvoid **) &comm,
                (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0))) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
         if ((r=OCIStmtPrepare(comm, err, (text*)(void*)stmt,
                (ub4) strlen((char *) stmt), (ub4) OCI_NTV_SYNTAX,
                (ub4) OCI_DEFAULT))) {
              checkerrr(err, r, (text*)err_msg);
              OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
              oci_error = 1;
              cleanup();
         if ((r=OCIStmtExecute(svc, comm, err, (ub4) 1, (ub4) 0,
                (CONST OCISnapshot *) 0, (OCISnapshot *) 0,
                (ub4) OCI_DEFAULT))) {
              checkerrr(err, r, (text*)err_msg);
              OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
              oci_error = 1;
              cleanup();
         OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
         OCIHandleFree((dvoid *) initslc, (ub4) OCI_HTYPE_STMT);
         if ((r = OCISessionEnd(svc, err, ses, OCI_DEFAULT))) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
        if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
         if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
        if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
        if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
              checkerrr(err, r, (text*)err_msg);
              oci_error = 1;
              cleanup();
        if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
              oci_error = 1;
              cleanup();
         if ( oci_error == 1) {
              cleanup();
            log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
         log4c_appender_set_udata(myappender, log_fd_main);
         mylog_msg("DjsMaster", LOG4C_PRIORITY_DEBUG,
          " [0000]  daemon running, ready to accept connections,"
          "waiting for to connect......");     
         fclose(log_fd_main);
         while (1) {
                 Accept a connection from a slave. 
            clientfd = malloc(sizeof(int));
            if ((*clientfd = serv_accept(sockfd)) < 0) {
                    exit(1);
                 Fork off a child thread to process this slave. 
            pthread_create(&job_thread, &thread_attr, jobfunction, clientfd);
             //count++;
               sleep(1);
    //!Dump Oracle Error
    void cleanup() {
         log4c_appender_t* myappender;
         myappender = log4c_appender_get("myappender");
         log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
         log4c_appender_set_udata(myappender, fopen(log_file, "a"));
         mylog_log("DjsMaster", LOG4C_PRIORITY_ERROR,
          " [2001] Oracle error %s", err_msg);
    void *jobfunction(void *arg) {
         OCIError*     err;
         OCIServer*    srv;
         OCISvcCtx*    svc;
         OCISession*   ses;
         sword r;
         OCIBind      *bnd1hp = (OCIBind*) 0;
         OCIBind      *bnd2hp = (OCIBind*) 0;
         OCIBind      *bnd3hp = (OCIBind*) 0;
         OCIDefine *def1hp = (OCIDefine *) 0;
         OCIDefine *def2hp = (OCIDefine *) 0;
         OCIDefine *def3hp = (OCIDefine *) 0;
         OCIDefine *def4hp = (OCIDefine *) 0;
         OCIDefine *def5hp = (OCIDefine *) 0;
         OCIDefine *def6hp = (OCIDefine *) 0;
         OCIDefine *def7hp = (OCIDefine *) 0;
         OCIDefine *def8hp = (OCIDefine *) 0;
         OCIDefine *def9hp = (OCIDefine *) 0;
         char select_all[] =" select filename, filepath, image_system_id, quality_status_cd,"
                          " format_cd,global_id, id, conv_attempts_cnt, image_resolution"
                                  " from TABLE_NAME where conv_attempts_cnt = 0 order by created_datetime ";
         char select_count[] ="select conv_attempts_cnt, image_resolution from TABLE_NAME"
                            " where id = :1 ";
         char update_single[] ="update TABLENAME set conv_attempts_cnt = :1 where id = :2 ";
         char stmt[]="commit";
         int oci_error = 0;
            Variables to hold the values returned from SQL SELECT
         int id, global_id, format_cd, quality_status;
         int resolution, image_id, conv_attempts_cnt;
         char filename[101];                      
       char filepath[201];                      
         char filepath_full[MAX_BUF];       
         char tif_filename[101];                 
         char return_filepath[MAX_BUF];     
         char conv_details[MAX_BUF];          
         char *hold_filename;
         char *hold_filepath;
         char *hold_tiffile;
       char *progress;
         char *tempstr_p;
       char *jobnum_p;
       char *returnname_p;
         char *returnsize_p;
         char tempstr[MAX_BUF];
         int count = 0;                 
         int success_flag = 0;     
       int reprocess_flag = 0;
         char s_resolution[5];     
         char s_format[5];            
         struct stat filebuf;      
         int myfd, datafd, jobid, i, update, holdid;
         char sockread[1024], sockwrite[1024],
            jobnum[10], dataname[1024],
            line_to_log[1024], databuf[1024];
         int datasize, bufsize, returnsize, filesize;
         FILE *log_fd;
         log4c_appender_t* myappender;
         myappender = log4c_appender_get("myappender");
         log_fd = fopen(log_file, "a");
         if (log_fd == NULL) {
              perror(" ERROR - DjsMaster [1000] Failed to open log file.\n");
            exit(1);
         myfd = *((int *)arg);          
       log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
         log4c_appender_set_udata(myappender, log_fd);
         mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                " [1000] Starting jobs on %d.",
                (int)pthread_self());     
         Readline_r(myfd, sockread, 255);
            Continue to read requests received from the slaves. 
         while (strcmp(sockread, SLAVE_DONE) != 0) {
              OCIStmt* slcth;               
              OCIStmt* updth;               
              OCIStmt* slcth2;           
              OCIStmt*       comm;
              sleep(15);
          log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
              log4c_appender_set_udata(myappender, log_fd);
              mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
             " [1000] Continue to read request from %d, looping with %s ",
             (int)pthread_self(), sockread);     
            if (strcmp(sockread, REQUEST_JOB) == 0) {
                   log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                   log4c_appender_set_udata(myappender, log_fd);
                   mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                " [1000] %d  requesting job. Connecting to database.",
                (int)pthread_self());     
               if (oci_error == 1) {
                if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
                        checkerrr(err, r, (text*)err_msg);
                        cleanup();
                      if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
                           checkerrr(err, r, (text*)err_msg);
                           cleanup();
                      if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
                           checkerrr(err, r, (text*)err_msg);
                           cleanup();
                      if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
                           checkerrr(err, r, (text*)err_msg);
                           cleanup();
                      if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
                           cleanup();
                oci_error = 0;
                   OCIHandleAlloc(env, (dvoid**)&err, OCI_HTYPE_ERROR,   0, 0);
                   OCIHandleAlloc(env, (dvoid**)&srv, OCI_HTYPE_SERVER,  0, 0);
                   OCIHandleAlloc(env, (dvoid**)&svc, OCI_HTYPE_SVCCTX,  0, 0);
                   OCIHandleAlloc(env, (dvoid**)&ses, OCI_HTYPE_SESSION, 0, 0);
                   r=OCIServerAttach(srv, err, dbname,
                   strlen((const char*)dbname), (ub4) OCI_DEFAULT);
                   if (r != OCI_SUCCESS) {
                        checkerrr(err, r, err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER,  err);
             OCIAttrSet(ses, OCI_HTYPE_SESSION, username,
                   strlen((const char*)username), OCI_ATTR_USERNAME, err);
             OCIAttrSet(ses, OCI_HTYPE_SESSION, password,
                   strlen((const char*)password), OCI_ATTR_PASSWORD, err);
                   if ( (r=OCIAttrSet((dvoid *) svc, (ub4) OCI_HTYPE_SVCCTX,
                   (dvoid *) ses, (ub4) 0, (ub4) OCI_ATTR_SESSION, err)) ) {
                        checkerrr(err, r,err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   r=OCISessionBegin (svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);
                   if (r != OCI_SUCCESS) {
                        checkerrr(err, r,err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if (OCIHandleAlloc((dvoid *) env, (dvoid **) &slcth,
                   (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
                        checkerrr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIStmtPrepare(slcth, err, (text*)(void*)select_all,
                      (ub4) strlen((char *) select_all),
                      (ub4) OCI_NTV_SYNTAX,
                      (ub4) OCI_DEFAULT))) {
                        checkerrr(err, r, (text*)err_msg);
                        OCIHandleFree((dvoid *) slcth, (ub4) OCI_HTYPE_STMT);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def1hp, err, 1,
                      filename, 100, SQLT_CHR, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def2hp, err, 2,
                      filepath, 100, SQLT_CHR, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def3hp, err, 3,
                      &image_id, sizeof(int), SQLT_INT, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def4hp, err, 4,
                      &quality_status, sizeof(int), SQLT_INT,
                      (dvoid *) 0, (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def5hp, err, 5,
                      &format_cd, sizeof(int), SQLT_INT, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def6hp, err, 6,
                      &global_id, sizeof(int), SQLT_INT, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def7hp, err, 7,
                      &id, sizeof(int), SQLT_INT, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIDefineByPos(slcth, &def8hp, err, 8,
                      &conv_attempts_cnt, sizeof(int), SQLT_INT, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                   if ((r=OCIDefineByPos(slcth, &def9hp, err, 9,
                      &resolution, sizeof(int), SQLT_INT, (dvoid *) 0,
                      (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                        checkerr(err, r, (text*)err_msg);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   if ((r=OCIStmtExecute(svc, slcth, err, (ub4) 0, (ub4) 0,
                      (CONST OCISnapshot *) 0, (OCISnapshot *) 0,
                      (ub4) OCI_DEFAULT))){
                        checkerr(err, r, (text*)err_msg);
                        OCIHandleFree((dvoid *) slcth, (ub4) OCI_HTYPE_STMT);
                        oci_error = 1;
                        cleanup();
                        sprintf(sockwrite, "%s", NO_JOB);
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        Readline_r(myfd, sockread, 255);
                        continue;
                   r = OCIStmtFetch(slcth, err, (ub4) 1, (ub4) OCI_FETCH_NEXT, (ub4) OCI_DEFAULT);
                   if (r == OCI_SUCCESS) {
                        success_flag = 1;
                reprocess_flag = 0;
                   else if (r == OCI_SUCCESS_WITH_INFO) {
                        success_flag = 1;
                reprocess_flag = 0;
                   else {
                        if (r != OCI_NO_DATA) {
                             checkerr(err, r, (text*)err_msg);
                             success_flag = 0;
                        success_flag = 0;
                   OCIHandleFree((dvoid *) slcth, (ub4) OCI_HTYPE_STMT);
                       No job in the table. Continue listening. Tell the slave
                       there are no current jobs to process. 
                 if (! (success_flag)) {
                if ((r = OCISessionEnd(svc, err, ses, OCI_DEFAULT))) {
                           checkerrr(err, r, (text*)err_msg);
                           oci_error = 1;
                           cleanup();
                           sprintf(sockwrite, "%s", NO_JOB);
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                           Readline_r(myfd, sockread, 255);
                           continue;
                if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
                           checkerrr(err, r, (text*)err_msg);
                           oci_error = 1;
                           cleanup();
                           sprintf(sockwrite, "%s", NO_JOB);
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                           Readline_r(myfd, sockread, 255);
                           continue;
                      if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
                           checkerrr(err, r, (text*)err_msg);
                           oci_error = 1;
                           cleanup();
                           sprintf(sockwrite, "%s", NO_JOB);
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                           Readline_r(myfd, sockread, 255);
                           continue;
                      if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
                           checkerrr(err, r, (text*)err_msg);
                           oci_error = 1;
                           cleanup();
                           sprintf(sockwrite, "%s", NO_JOB);
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                           Readline_r(myfd, sockread, 255);
                           continue;
                      if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
                           checkerrr(err, r, (text*)err_msg);
                           oci_error = 1;
                           cleanup();
                           sprintf(sockwrite, "%s", NO_JOB);
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                           Readline_r(myfd, sockread, 255);
                           continue;
                      if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
                           oci_error = 1;
                           cleanup();
                           sprintf(sockwrite, "%s", NO_JOB);
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                           Readline_r(myfd, sockread, 255);
                           continue;
                        success_flag = 0;
                        sprintf(sockwrite, "%s", NO_JOB);
                    log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                        log4c_appender_set_udata(myappender, log_fd);
                        mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                      " [1000] No new jobs, writing to %d %s",
                      (int)pthread_self(), sockwrite);     
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                Readline_r(myfd, sockread, 255);
                        success_flag = 0;
                continue;
                   /*  New job is fetched, process it.  */
                     else {
                reprocess_flag = 0;
    reprocess:     log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                        log4c_appender_set_udata(myappender, log_fd);
                        mylog_log("Oracle", LOG4C_PRIORITY_DEBUG,
                   " [2000][id %d] Fetching data for new job from databse", id);
                        mylog_log("Oracle", LOG4C_PRIORITY_DEBUG,
                   " [2000][id %d]Fetched job_id=%d, format=%d, resolution=%d, conv_attemtps=%d, imagefile=%s, imagepath=%s",
                   id, id, format_cd, resolution,
                   conv_attempts_cnt, filename, filepath);
                        log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                        log4c_appender_set_udata(myappender, log_fd);
                        mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                   " [1000][id %d] New job for %d. Job will be processed.",
                   id, (int)pthread_self());     
                        holdid = id;
                if ( reprocess_flag == 1 )
                           OCIHandleAlloc(env, (dvoid**)&err, OCI_HTYPE_ERROR,   0, 0);
                           OCIHandleAlloc(env, (dvoid**)&srv, OCI_HTYPE_SERVER,  0, 0);
                           OCIHandleAlloc(env, (dvoid**)&svc, OCI_HTYPE_SVCCTX,  0, 0);
                           OCIHandleAlloc(env, (dvoid**)&ses, OCI_HTYPE_SESSION, 0, 0);
                           r=OCIServerAttach(srv, err, dbname, strlen((const char*)dbname), (ub4) OCI_DEFAULT);
                           if (r != OCI_SUCCESS) {
                                checkerrr(err, r, err_msg);
                                oci_error = 1;
                                cleanup();
                                success_flag = 0;
                                sprintf(sockwrite, "%s", NO_JOB);
                                Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                                Readline_r(myfd, sockread, 255);
                                continue;
                           OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER,  err);
                           OCIAttrSet(ses, OCI_HTYPE_SESSION, username, strlen((const char*)username), OCI_ATTR_USERNAME, err);
                           OCIAttrSet(ses, OCI_HTYPE_SESSION, password, strlen((const char*)password), OCI_ATTR_PASSWORD, err);
                           if ( (r=OCIAttrSet((dvoid *) svc, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) ses, (ub4) 0, (ub4) OCI_ATTR_SESSION, err)) ) {
                                checkerrr(err, r,err_msg);
                                oci_error = 1;
                                cleanup();
                                success_flag = 0;
                                sprintf(sockwrite, "%s", NO_JOB);
                                Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                                Readline_r(myfd, sockread, 255);
                                continue;
                           r=OCISessionBegin (svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);
                           if (r != OCI_SUCCESS) {
                                checkerrr(err, r,err_msg);
                                oci_error = 1;
                                cleanup();
                                success_flag = 0;
                                sprintf(sockwrite, "%s", NO_JOB);
                                Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                                Readline_r(myfd, sockread, 255);
                                continue;
                        if (OCIHandleAlloc((dvoid *) env, (dvoid **) &slcth2,
                      (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r=OCIStmtPrepare(slcth2, err, (text*)(void*)select_count,
                      (ub4) strlen((char *) select_count),
                      (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))) {
                             checkerrr(err, r, (text*)err_msg);
                             OCIHandleFree((dvoid *) slcth2, (ub4) OCI_HTYPE_STMT);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r=OCIDefineByPos(slcth2, &def1hp, err, 1,
                         &conv_attempts_cnt, sizeof(int), SQLT_INT, (dvoid *) 0,
                         (ub2   *) 0, (ub2   *) 0, OCI_DEFAULT))) {
                             checkerr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIBindByPos(slcth2, &bnd1hp, err, (ub4) 1,
                         &holdid, sizeof(int), SQLT_INT,
                         (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0,
                         (ub4 *) 0, OCI_DEFAULT))){
                             checkerr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIStmtExecute(svc, slcth2, err, (ub4) 0, (ub4) 0,
                         (CONST OCISnapshot *) 0,
                         (OCISnapshot *) 0, (ub4) OCI_DEFAULT))){
                             checkerr(err, r, (text*)err_msg);
                             OCIHandleFree((dvoid *) slcth2, (ub4) OCI_HTYPE_STMT);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        r = OCIStmtFetch(slcth2, err, (ub4) 1,
                      (ub4) OCI_FETCH_NEXT, (ub4) OCI_DEFAULT);
                        if (r == OCI_SUCCESS) {
                             success_flag = 1;
                        else if (r == OCI_SUCCESS_WITH_INFO) {
                             success_flag = 1;
                        else {
                             if (r != OCI_NO_DATA) {
                                  checkerr(err, r, (text*)err_msg);
                                  success_flag = 0;
                                  sprintf(sockwrite, "%s", NO_JOB);
                                  Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                                  Readline_r(myfd, sockread, 255);
                                  continue;
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        OCIHandleFree((dvoid *) slcth2, (ub4) OCI_HTYPE_STMT);
                        count = conv_attempts_cnt;
                        count++;
                        /*   Updating conv_attemtpts_cnt for the current job  */
                        if (OCIHandleAlloc((dvoid *) env, (dvoid **) &updth,
                      (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r=OCIStmtPrepare(updth, err, (text*)(void*)update_single,
                      (ub4) strlen((char *) update_single), (ub4) OCI_NTV_SYNTAX,
                      (ub4) OCI_DEFAULT))) {
                             checkerrr(err, r, (text*)err_msg);
                             OCIHandleFree((dvoid *) updth, (ub4) OCI_HTYPE_STMT);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIBindByPos(updth, &bnd2hp, err, (ub4) 1, &count,
                         sizeof(count), SQLT_INT, (dvoid *) 0, (ub2 *) 0,
                         (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT))){
                         checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIBindByPos(updth, &bnd3hp, err, (ub4) 2, &holdid,
                         sizeof(holdid), SQLT_INT, (dvoid *) 0, (ub2 *) 0,
                         (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT))){
                         checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIStmtExecute(svc, updth, err, (ub4) 1, (ub4) 0,
                         (CONST OCISnapshot *) 0, (OCISnapshot *) 0,
                         (ub4) OCI_DEFAULT))){
                             checkerrr(err, r, (text*)err_msg);
                             OCIHandleFree((dvoid *) updth, (ub4) OCI_HTYPE_STMT);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r=OCIHandleAlloc((dvoid *) env, (dvoid **) &comm,
                         (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0))) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r=OCIStmtPrepare(comm, err, (text*)(void*)stmt,
                         (ub4) strlen((char *) stmt),
                         (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))) {
                             checkerrr(err, r, (text*)err_msg);
                             OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r=OCIStmtExecute(svc, comm, err, (ub4) 1,
                      (ub4) 0, (CONST OCISnapshot *) 0, (OCISnapshot *) 0,
                      (ub4) OCI_DEFAULT))) {
                             checkerrr(err, r, (text*)err_msg);
                             OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
                        OCIHandleFree((dvoid *) updth, (ub4) OCI_HTYPE_STMT);
                        if ((r = OCISessionEnd(svc, err, ses, OCI_DEFAULT))) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
                             checkerrr(err, r, (text*)err_msg);
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
                             oci_error = 1;
                             cleanup();
                             success_flag = 0;
                             sprintf(sockwrite, "%s", NO_JOB);
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             continue;
                        hold_filename = strtok_r(filename, " ", &progress);
                        strcpy(filename,hold_filename);
                        strcpy(tif_filename, filename);
                    hold_tiffile = strtok_r(tif_filename, ".", &progress);
                        strcpy(tif_filename, hold_tiffile);
                        strcat(tif_filename, ".tif");
                        hold_filepath = strtok_r(filepath, " ", &progress);
                        strcpy(filepath, hold_filepath);
                        strcpy(return_filepath, filepath);
                        strcat(return_filepath, "/");
                        strcat(return_filepath, filename);
                        log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                        log4c_appender_set_udata(myappender, log_fd);
                        mylog_log("DjsMaster", LOG4C_PRIORITY_DEBUG,
                   " [1000][id %d]  Image %s located in %s will be converted to image filename %s ",
                   holdid, tif_filename, filepath, filename);     
                        if (tif_filename == NULL) {
                             log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                             log4c_appender_set_udata(myappender, log_fd);
                             mylog_log("DjsMaster", LOG4C_PRIORITY_WARN,
                      " [1001][id %d]  No file to convert. No file name associated with the job",
                      holdid);     
                   sprintf(sockwrite, "%s", NO_JOB);
                   log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                             log4c_appender_set_udata(myappender, log_fd);
                             mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                      " [1000][id %d] No job to perform. Writing to %d %s",
                      holdid, (int)pthread_self(), sockwrite);     
                             Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                             Readline_r(myfd, sockread, 255);
                             if ( count <= max_failure ) {
                                  success_flag = 1;
                      reprocess_flag = 1;
                                  goto reprocess;
                             else {
                                  success_flag = 0;
                                  continue;
                             //continue;
                        strcpy(filepath_full, filepath);
                        strcat(filepath_full, "/");
                        strcat(filepath_full, tif_filename);
                        if (stat(filepath_full, &filebuf) < 0) {
                   log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                           log4c_appender_set_udata(myappender, log_fd);
                             mylog_log("DjsMaster", LOG4C_PRIORITY_WARN,
                      " [1002][id %d]  Could not stat the file %s. Nothing to send to %d ",
                      holdid, filepath_full, (int)pthread_self());     
                           sprintf (sockwrite, "%s", NO_JOB);
                   log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                             log4c_appender_set_udata(myappender, log_fd);
                             mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                      " [1000][id %d] No job to perform. Writing to %d %s",
                      holdid, (int)pthread_self(), sockwrite);     
                           Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                   Readline_r(myfd, sockread, 255);
                             if ( count <= max_failure ) {
                                  success_flag = 1;
                      reprocess_flag = 1;
                                  goto reprocess;
                             else {
                                  success_flag = 0;
                                  continue;
                        //continue;
                        datasize = (int)filebuf.st_size;
                        sprintf(s_resolution, "%d", resolution);
                        sprintf(s_format, "%d", format_cd);
                        strcpy(conv_details, "./conv.sh:");
                        strcat(conv_details, tif_filename);
                        strcat(conv_details, ":");
                        strcat(conv_details, s_resolution);
                        strcat(conv_details, ":");
                        strcat(conv_details, s_format);
                        log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                        log4c_appender_set_udata(myappender, log_fd);
                        mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
                   " [1000][id %d] Writing to socket all conversion details for %d ",
                   holdid, (int)pthread_self());     
                        sprintf(sockwrite, "%d=%s%%%s%%%d%%%s\n", id, conv_details,
                      tif_filename, datasize, return_filepath);
                        log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
                        log4c_appender_set_udata(myappender, log_fd);
                        mylog_log("DjsMaster", LOG4C_PRIORITY_DEBUG, " [1000][id %d] Sending %s",
                      holdid, sockwrite);     
                        Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
                        if ((datafd = open(filepath_full, O_RDONLY)) < 0) {
                   close(myfd);
                     log4c_appender_set_type(myappender,

    I wonder how OCI_OBJECT will fix it as the call to OCIServerAttach is the culprit in the update_Tables function.

  • How to execute a SQL  Query in Ms-Access

    Hi,
    I've a query which fetches the data from the tables based on daily transactions.
    I mean, the data gets updated daily basis.
    Now, i want to send the user a Ms-access work sheet with the query written, so that when ever the query is executed, it would fetch the records (with latest updates).
    I found some documents in google to, how to write sql query in ms-access.
    How ever, i'm unable to find the connection setup.
    how do i connect to oracle database using ms-access??
    Can any one please help me regarding this.
    Thanks,
    Santhosh

    You can try this tutorials
    http://www.reo.gov/gis/tools/infobase/LinkAccessToOracle.pdf
    Basically steps include,
    Install and configure Oracle client
    Configure ODBC DSN using correct TNS name configured in first step
    Link the table from Msaccess, make sure you linked the table not import it.

  • Error while executing report from Query designer

    Hi All,
    When I am executing from query designer, I am getting following error.
    Even I can't execute it from another portal where i created source system of BI server.
    But i can execute queriew from Query analyser and t-code RSRT.
    When I execute from Query desinger the url is as follows.
    http://XXX:00/irj/servlet/prt/portal/prtroot/pcd!3aportalcontent!2fcom.sap.pct!2fplatform_add_ons!2fcom.sap.ip.bi!2fiViews!2fcom.sap.ip.bi.bex?QUERY=0PA_C01_Q0201&VARIABLE_SCREEN=X&DUMMY=5_
    And the error is:
    500 Internal Server Error
      BEx Web Application
    Failed to process request; contact your system administrator
    Information for Administrator
    To avoid this exception see the steps below. To help SAP better investigate this issue, you will need to provide the diagnostic information from these steps.
    1. Most likely, the issue you are experiencing has already been corrected. Please make sure that the most recent patch level is deployed on your system according to notes 1033246 and 1011241. Starting with Support Package Stack 16 patch level 30, BI Java is delivered according to the synchronized delivery process described in the note 1033246.
    2. Please ensure that NetWeaver Business Intelligence Diagnostics & Support Desktop Tool  does not report any issues on your server according to note 937697. You can start it by clicking here (administrator permissions are required).
    3. When opening any customer message on this issue, please attach:
    Support Desktop Tool support info ZIP  file according to note 937697,*
    Required information for reproduction  according to note 948490.*
    Error Summary
    Exception occured while processing the current request; this exception cannot be handled by the application or framework
    If the information on this page does not help you locate and correct the cause of the problem, contact your system administrator
    To facilitate analysis of the problem, keep a copy of this error page Hint: Most Web browsers allow you to select all content, and copy and paste it into an empty document (such as in an email or simple text file)
    Root Cause
    The initial exception that caused the request to fail was:
    java.lang.NullPointerException
    java.lang.NullPointerException
    at com.sap.ip.bi.webapplications.runtime.service.metadata.impl.MetadataAccess.getMetadataModel(MetadataAccess.java:139)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.getMetadataModel(Page.java:8953)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.normalizeCommands(Page.java:4963)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.doProcessRequest(Page.java:4473)
    at com.sap.ip.bi.webapplications.runtime.impl.Page._processRequest(Page.java:3316)
    Details: Full Exception Chain
    System Environment
    Server
    BI Java Release: 7 - Patch level: 0000000100 - Description: BI Web Applications Java - Additional info:  - Production mode: true
    BI ABAP unknown
    Java Virtual Machine Java HotSpot(TM) 64-Bit Server VM - Sun Microsystems Inc. - 1.4.2_24-b04
    Operating System SunOS - amd64 - 5.10
    REgards
    Mohan

    Hi mohan ,
      You can check these OSS notes for the issue  .
    1. 795699 - Customizing default error messages for HTTP
    2. 807000 - Http requests are not fully read after timeout
    3. 804124 - HTTP communication with XI Adapter Engine fails
    Regards,
    Lokesh

  • Parameter index move while executing PL/SQL stored procedure/function

    Hello, community.
    Have a question for you. It looked like very easy to write some small JDBC-wrapper to handle stored procedure/functions call for Oracle.
    Here is the code snippet of it:
    import java.io.Serializable;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Iterator;
    import javax.sql.DataSource;
    import oracle.jdbc.driver.OracleTypes;
    import org.apache.log4j.Logger;
    public class SmallHelper {
         public static final int CALL_TYPE__PROCEDURE = 1;
         public static final int CALL_TYPE__FUNCTION = 2;
         public static final int PARAMETER__IN = 1;
         public static final int PARAMETER__OUT = 2;
         private static final Logger log = Logger.getLogger(SmallHelper.class);
         private Connection con = null;
         private CallableStatement statement = null;
         private String name;
         private int type;
         private int resultType;
         private HashMap arguments = new HashMap();
          * Creates connection using data source as parameter.
          * @param ds - data source
          * @throws EhlApplicationException
         public SmallHelper(DataSource ds) throws Exception {
           try {
                   con = ds.getConnection();
              catch (SQLException e) {
                   ExceptionHelper.process(e);
         public void registerProcedure(String name) {
              this.name = name;
              this.type = CALL_TYPE__PROCEDURE;
         public void registerFunction(String name, int resultType) {
              this.name = name;
              this.resultType = resultType;
              this.type = CALL_TYPE__FUNCTION;
          * NB! When You're dealing with stored function index should start with number 2!
         public void registerArgument(int index, Object value, int type, int inOutType) {
              arguments.put(new Long(index), new CallableStatementArgument(value, type, inOutType));
         private String getSQL() {
              StringBuffer str = new StringBuffer("{ call  ");
              if ( type == CALL_TYPE__FUNCTION )
                   str.append(" ? := ");
              str.append(name).append("( ");
              for ( Iterator i = arguments.values().iterator(); i.hasNext(); ) {
                   i.next();
                   str.append("?");
                   if ( i.hasNext() )
                        str.append(", ");
              str.append(") }");
              return str.toString();
         public void execute() throws SQLException{
              String query = getSQL();
              statement = con.prepareCall(query);
              if ( type == CALL_TYPE__FUNCTION )
                   statement.registerOutParameter(1, resultType);
              for ( Iterator i = arguments.keySet().iterator(); i.hasNext(); ) {
                   Long index = (Long) i.next();
                   CallableStatementArgument argument = (CallableStatementArgument) arguments.get(index);
                   int type = argument.getType();
                   if ( argument.getInOutType() == PARAMETER__OUT )
                        statement.registerOutParameter(index.intValue(), type);
                   else if ( type != OracleTypes.CURSOR )
                        statement.setObject(index.intValue(), argument.getValue(), type);
              log.info("Executing SQL: "+query);
              statement.execute();
         public CallableStatement getStatement() {
              return statement;
         public void close() throws EhlApplicationException {
              try {
                   if (statement != null)
                        statement.close();
                   if (con != null)
                        con.close();
              catch (SQLException e) {
                   EhlSqlExceptionHelper.process(e);
         private class CallableStatementArgument implements Serializable{
              private Object value;
              private int type;
              private int inOutType;
              public CallableStatementArgument(Object value, int type, int inOutType) {
                   this.value = value;
                   this.type = type;
                   this.inOutType = inOutType;
              public int getType() {
                   return type;
              public Object getValue() {
                   return value;
              public int getInOutType() {
                   return inOutType;
    }It was really done in 10-15 mins, so don't be very angry at code quality :)
    Here is the problem.:
                   helper.registerProcedure("pkg_diagnosis.search_diagnosis");
                   helper.registerArgument(1, null, OracleTypes.CURSOR, EhlJdbcCallableStatementHelper.PARAMETER__OUT);
                   helper.registerArgument(2, pattern, OracleTypes.VARCHAR, EhlJdbcCallableStatementHelper.PARAMETER__IN);
                   helper.registerArgument(3, lang, OracleTypes.VARCHAR, EhlJdbcCallableStatementHelper.PARAMETER__IN);
                   helper.registerArgument(4, EhlSqlUtil.convertSetToString(langs, ","), OracleTypes.VARCHAR, EhlJdbcCallableStatementHelper.PARAMETER__IN);
                   helper.registerArgument(5, EhlSqlUtil.convertSetToString(diagnosisClass, ","), OracleTypes.VARCHAR, EhlJdbcCallableStatementHelper.PARAMETER__IN);
                   helper.registerArgument(6, parentId, OracleTypes.NUMBER, EhlJdbcCallableStatementHelper.PARAMETER__IN);
                   helper.execute();
                   ResultSet rs = ((OracleCallableStatement) helper.getStatement()).getCursor(1);
                   procedure definition:
    procedure search_diagnosis (l_res OUT dyna_cur,
                               in_search_string IN VARCHAR2,
                               in_search_lang IN VARCHAR2,
                               in_lang_list IN VARCHAR2,
                               in_diag_class_list IN VARCHAR2,
                               in_parent_id IN NUMBER) Procedure call has inner check that fail because of som strange reason:
    in_search_string has 2 as index, that is correct. but procedure recieves is as number 3 in parameter list (what is in_search_lang). Other parameters are moved to. It seems like a cursor takes 2 places in definition. It's clear that if I put in_search_string as 1 parameter and cursor as 0 I'll get invalid parametr bindong(s) exception. So... any ideas why 2nd parameter is actually 3rd?
    Thanks beforehand.

    hmm...moreover:
    if we change procedure to function and call it in a simple way:
    CallableStatement stmnt = helper.getConnection().prepareCall("begin ? := pkg_diagnosis.search_diagnosis(?,?,?,?,?); end;");
                   stmnt.registerOutParameter(1, OracleTypes.CURSOR);
                   stmnt.setString(2, pattern);
                   stmnt.setString(3, lang);
                   stmnt.setString(4, langs);
                   stmnt.setString(5, diagnosisClass);
                   stmnt.setObject(6, parentId, OracleTypes.NUMBER);
                   stmnt.execute();
                   ResultSet rs = (ResultSet) stmnt.getObject(1);the exception is:
    [BEA][Oracle JDBC Driver][Oracle]ORA-06550: line 1, column 14:
    PLS-00382: expression is of wrong type
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignoredif we return some string or number - it works. but when we want cursor back - it fails.
    cursor is defined like ordinary dynamic cursor:
    TYPE dyna_cur IS REF CURSOR;

Maybe you are looking for

  • Trying to restore after crash and rebuild but Time Machine isn't seeing my NAS drive.

    My MacBook Pro had it's first crash in 6 years or daily use and abuse. Came home from work and had the "You need to restart your mac, hold down the power button" screen in 10 languages. After a heart attack, a visit the the neighborhood bar for a cou

  • Icloud not working on ipad 2

    i just purchased an ipad2-synced it with itunes on my pc and started icloud. I also have an iphone that I synced and started icloud on. Now, icloud does not seem to be working on my ipad. Automatic updates were sent to my PC and iphone, but did not s

  • Field selection on material master by plant

    Dear friends , Does anyone knows if I can configure material master field selection by PLANT ? which steps should we perform ? best regards, Ale

  • REport: Lines on credit hold ? what is purpose of this report

    Hi All, I couldnt find much information about this report Lines On credit hold.I was having question ,is it possible to place cerdit hold on lines? Because as per my knowlage credit hold is order level hold not line level and looks like this report p

  • Login Issues in jboss.

    Hi I am facing a authentication issues in jboss.Actually i have developed an .ear application using Netbeans.And it is deployed succesfully on Glassfish,and i was able to login also.It has sun-web.xml and inside it has <security-role-mapping> <role-n