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.

Similar Messages

  • 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

  • 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

  • Java Runtime crash while executing native code.(version 1.6.0_10-beta)

    HI all
    i observed a crash while execution a native fuction , which is initializing an
    char array of size (1024*1024).Plz see the code snippet below:
    But it is working with java version: 1.5.0
    FileTest.c:
    #include<stdio.h>
    #include<fcntl.h>
    #include<string.h>
    #include<stdlib.h>
    #include "HelloWorld.h"
    JNIEXPORT jint JNICALL Java_HelloWorld_CreateLargestF<div style="direction: ltr">ile (JNIEnv * env, jclass obj)
    //int CreateLargestFile(char* filename)
    char *filename = "LargestFile.tmp";
    int fd = creat(filename, 0666);
    if(fd == -1)
    return 0;
    int size = 1024 * 1024;
    char buffer[size];
    //buffer is not filled fully, JRE aborts after i reaches to 61327 approx.
    int i;
    for( i = 0;i<size;i++)
    buffer[i] = 'a';
    printf("\n\n==>> Executing FSTLD0001 : buffer %d = %c \n",i,buffer);
    printf("\n\n==>> Executing FSTLD0001 : after init\n");
    //memset(buffer, 'a', size);
    while(1)
    long bytes = write(fd, buffer, size);
    if(bytes < size)
    break;
    close(fd);
    return 1;
    HelloWorld.java
    public class HelloWorld {
    public static native int CreateLargestFile();
    public static void main(String[] args)
    String dir = System.getProperty("user.dir");
    String libpath = dir + "/libFileTest.so";
    System.load(libpath);
    CreateLargestFile();
    jni.h version used is: 1.56 03/12/19
    jni_md.h version used is : 1.14 03/12/19
    FULL PRODUCT VERSION :
    java version "1.6.0_10-beta"
    Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b14)
    Java HotSpot(TM) Client VM (11.0-b11 mixed mode, sharing)
    FULL OS VERSION :
    Linux debian 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686 GNU/Linux
    ERROR MESSAGES:
    # An unexpected error has been detected by Java Runtime Environment:
    # SIGSEGV (0xb) at pc=0xb7eec667, pid=7128, tid=3084340144
    # Java VM: Java HotSpot(TM) Client VM (11.0-b11 mixed mode, sharing linux-x86)
    # Problematic frame:
    # C [libFileTest.so+0x667] Java_HelloWorld_CreateLargestFile+0x8b
    <div style="direction: ltr">#
    # If you would like to submit a bug report, please visit:
    # [http://java.sun.com/webapps/bugreport/crash.jsp]
    # The crash happened outside the Java Virtual Machine in native code.
    # See problematic frame for where to report the bug.</div>
    May i have any feedbacks or help?
    Thanks
    </div>

    Stack size perhaps?
    Allocate the buffer off the heap instead of the stack.
    The following might be related (might not as well.)
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6227033
    There is a flag that adds info for jni via the command line turn it on.

  • Error while executing the .sql file

    Hello,
    Every time when i execute the below plsql it's keep throwing the error message as show in below output, this happens even when i manually create the trigger before executing the .sql file of all the below statements, can you please correct me what i am doing wrong here. Thank you.
    DROP TABLE FCSDWH.REF_DATA_MASTER;
    CREATE TABLE FCSDWH.REF_DATA_MASTER
    REF_DATA_MASTER_ID                      NUMBER PRIMARY KEY,
    DESCRIPTION                                     VARCHAR2(255 CHAR),
    CREATE_ID                                       VARCHAR2(10 CHAR),
    CREATE_DT                                       DATE,
    LST_UPD_ID                                      VARCHAR2(10 CHAR),
    LST_UPD_DT                                      DATE,
    ACT_STRT_DT                                     DATE,
    ACT_END_DT                                      DATE
    TABLESPACE FCSDWH
    STORAGE(INITIAL 50K);
    DROP SEQUENCE FCSDWH.REF_DATA_MASTER_SEQ;
    CREATE SEQUENCE FCSDWH.REF_DATA_MASTER_SEQ START WITH 1 INCREMENT BY 1;
    DROP TRIGGER "FCSDWH.REF_DATA_MASTER_TRG";
    CREATE OR REPLACE TRIGGER FCSDWH.REF_DATA_MASTER_TRG
    BEFORE INSERT ON FCSDWH.REF_DATA_MASTER
    FOR EACH ROW
    BEGIN
    SELECT FCSDWH.REF_DATA_MASTER_SEQ.NEXTVAL INTO :NEW.REF_DATA_MASTER_ID FROM DUAL;
    END;
    /Output:
    SQL> @/home/smadala/REF_DATA_MASTER.SQL
    Table dropped.
    Table created.
    Sequence dropped.
    Sequence created.
    DROP TRIGGER "FCSDWH.REF_DATA_MASTER_TRG"
    ERROR at line 1:
    ORA-04080: trigger 'FCSDWH.REF_DATA_MASTER_TRG' does not exist
    Trigger created.
    SQL>

    The trigger is "attached" to the table so when you drop the table the trigger goes as well.
    John

  • RemoteInvokable Error while executing the sqls through weblogic connection object

    Hi, We are getting the following error while trying to execute the sps or sql using
    the weblogic connection pool.
    1. The client is a simple java program (not Bean).
    2. It is processing lots of records (more than 6000). When we are having less no.
    of records we are not getting this error. i.e. 200/600 records.
    java.sql.SQLException: weblogic.rmi.extensions.RemoteRuntimeException - with nested
    exception:
    [java.rmi.NoSuchObjectException: RemoteInvokable - id: '334'
    Start server side stack trace:
    java.rmi.NoSuchObjectException: RemoteInvokable - id: '334'
            at weblogic.rjvm.RJVMImpl.dispatchRequest(RJVMImpl.java:627)
    I am also attaching here the source file.
    Please advise.
    Mishra
    [UpdateTransWork.java]

    Hi Surya,
    Which weblogic version/ service pack are you using?
    Meanwhile, the source of this error could be places
    where you close allocated JDBC objects twice. AFAIR
    it was fixed in the latest service packs.
    Regards,
    Slava Imeshev
    "Surya Narayan Mishra" <[email protected]> wrote in message
    news:3cce522e$[email protected]..
    >
    Hi, We are getting the following error while trying to execute the sps orsql using
    the weblogic connection pool.
    1. The client is a simple java program (not Bean).
    2. It is processing lots of records (more than 6000). When we are havingless no.
    of records we are not getting this error. i.e. 200/600 records.
    java.sql.SQLException: weblogic.rmi.extensions.RemoteRuntimeException -with nested
    exception:
    [java.rmi.NoSuchObjectException: RemoteInvokable - id: '334'
    Start server side stack trace:
    java.rmi.NoSuchObjectException: RemoteInvokable - id: '334'
    at weblogic.rjvm.RJVMImpl.dispatchRequest(RJVMImpl.java:627)
    I am also attaching here the source file.
    Please advise.
    Mishra

  • Strange error while execute PL/SQL

    Hi All,
    I am execting a procedure from user (say USER1) who is having the DBA role granted.
    Its getting the errors while creation:
    SQL> show errors
    Errors for PROCEDURE DISP_DBLOCKS:
    LINE/COL ERROR
    8/11 PLS-00341: declaration of cursor 'DBLOCK_CURSOR' is incomplete or
    malformed
    10/8 PL/SQL: SQL Statement ignored
    34/15 PL/SQL: ORA-00942: table or view does not exist
    42/17 PL/SQL: Item ignored
    54/8 PL/SQL: SQL Statement ignored
    56/16 PL/SQL: ORA-00942: table or view does not exist
    79/8 PL/SQL: SQL Statement ignored
    79/33 PLS-00320: the declaration of the type of this expression is
    incomplete or malformed
    LINE/COL ERROR
    82/8 PL/SQL: Statement ignored
    82/27 PLS-00320: the declaration of the type of this expression is
    incomplete or malformed
    But If I execute the same procedure from SYS user, its got created without any errors.
    The procedure is using tables SYS.V$LOCK L, SYS.V$SESSION S, SYS.V$PROCESS P, SYS.USER$ U, SYS.OBJ$ T and shows the locking info for DB.
    Please let me know if I am missing something and also how to resolve this issue.
    Thanks in advanced
    Bhupinder

    ORA-00942: table or view does not existbecause u don't have permission on some tables
    check it by manual issue select from these tables by new user

  • Client-side Memory leak while executing PL/SQL and reading from a view

    Iam noticing memory leaks in OCCI while performing the following:
    Sample function()
    1. Obtain a connection
    2. Create a statement to execute a PL/SQL procedure
    3 Execute the statement created in step #2
    4. Terminate the statement created in step #2
    5. Create a statement to read from a view which was populated
    by executing stored procedure in step #3
    6. Execute the statement created in step #5
    7. Terminate the statement created in step #5
    8. Release the connection
    The PL/SQL populates a view with fixed 65,000 records for every execution. PL/SQL opens a cursor, loads 65000 records and populates the target view and closes the cursor at the end. If i invoke the above function it results in memory leak of 4M for every call. I tried several variants such as:
    1. Disabling statement caching
    2. Using setSQL instead of newly creating second SQL statement
    3. Obtaining two separate connections for these two activities (PL/SQL exec and View read)
    4. Breaking the sample function into two, one for each of these activities (PL/SQL exec and View read).
    All the combinations results in the same behaviour of 4M memory leak.
    Iam using Oracle 10g Client/Server 10.2.0.1.0.
    Is there any known limitations in this area?

    Yes. Iam closing the result set and terminating the statement.
    My program contains layers of inhouse wrapper classes, which will take some time for
    me to present it in pure OCCI calls, to be posted here for your understanding.
    After some more debugging, i found that if the connection level statement caching is set to
    0, the memory leak is much lower than before.
    Thanks.
    Message was edited by:
    user498920

  • Deadlock while executing catalog.sql

    I've installed a local DB on my computer, running Oracle 9i. Wanted to import a dump and the manual says first execute the catalog.sql Script. When I do this as sys I get following errors:
    Execution x:
    ORA-04045: errors during recompilation/revalidation of SYS.CDC_CREATE_CTABLE_AFTER
    ORA-00060: deadlock detected while waiting for resource
    Execution x+1:
    ORA-04020: deadlock detected while trying to lock object SYS.STANDARD
    Execution x+2:
    ORA-04045: errors during recompilation/revalidation of SYS.CDC_CREATE_CTABLE_AFTER
    ORA-00060: deadlock detected while waiting for resource
    Execution x+3:
    ORA-04020: deadlock detected while trying to lock object SYS.STANDARD
    Execution x+4:
    ORA-04045: errors during recompilation/revalidation of SYS.CDC_CREATE_CTABLE_AFTER
    ORA-00060: deadlock detected while waiting for resource
    There seems to be a certain scheme, always alternating error messages. Could anyone help me please?
    Thanks!

    Hmmm, first I ran the Script in the SQL Navigator 5.0 and got the mentioned errors, now I ran it in the SQL *Plus worksheet and got following (different errors):
    SQL*Plus: Release 9.2.0.1.0 - Production on Di Jan 31 17:43:08 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    Connect durchgeführt.
    SP2-0310: Datei "standard.sql" konnte nicht geöffnet werdenSP2-0310: Datei "dbmsstdx.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catcr.sql" konnte nicht geöffnet werden
    PL/SQL-Prozedur wurde erfolgreich abgeschlossen.
    ... (text text text) ...
    Kommentar wurde angelegt.
    SP2-0310: Datei "catcdc.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "cataudit.sql" konnte nicht geöffnet werden
    View wurde angelegt.
    SP2-0310: Datei "utlraw.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catexp.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catldr.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catpart.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catadt.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catsum.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catlsby.sql" konnte nicht geöffnet werden
    SP2-0310: Datei "catxtb.sql" konnte nicht geöffnet werden
    CREATE ROLE RECOVERY_CATALOG_OWNER
    FEHLER in Zeile 1:
    ORA-01921: Rolle 'RECOVERY_CATALOG_OWNER' kollidiert mit anderem Benutzer- oder Rollennamen
    ... ( text text text) ...
    Transaktion mit COMMIT abgeschlossen.
    PL/SQL-Prozedur wurde erfolgreich abgeschlossen.
    Sorry for the German error messages :-/. Can I change the language?
    What's wrong?

  • 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.

  • 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;

  • GUI crashes while Executing  ADOBE Form

    Dear Expert,
    Please resolve my Problem,
    whenever I am trying to Execute Adobe Form, GUI is getting Crashed, Whereas when ever Basis Person is opening on his System he is able to Execute ADOBE Form, He told that there is a memory Problem, Memory Required For Executing this adobe Form should be at least 1GB RAM, But i have 504 MB RAM. Please tell me is it the Reason For Crashing GUI whenever Executing Adobe Form or Something Else.
    On my system i have Adobe Reader 9.
    Regards
    Shelly Malik

    Check your installation using [Adobe Document Services Configuration Guide|http://help.sap.com/saphelp_NW70EHP1/helpdata/en/37/504b8cbc2848a494facfdc09a359b1/frameset.htm] and also check OSS [ Note 944221 - Troubleshooting if problems occur in forms processing|https://service.sap.com/sap/support/notes/944221]
    Regards,
    Raymond

  • Forms crashing while executing Oracle Forms Functional script in OTM

    Hello,
    We're trying to execute Oracle Ebiz forms related functional test scripts developed in Open Script in Oracle Test Manager.
    Exactly when the forms get launched, the JRE is getting crashed, and the script is failing. What could be the reason.
    I've added the class path in Java control panel for the JRE which comes with OATS, and enabled 1.6.33 version, which works absolutely fine when same script is run using OpenScript and not through OTM.
    Also, in windows services we have provided the valid admin login credentials to the run the service as, instead of local machine user.
    Any help and insight on this problem would be of great help.
    Regards,
    Nishant
    Edited by: 958623 on Oct 29, 2012 5:09 AM

    Yes as mentioned i have used run time setting "-formsft.startup_timeout 30".
    Per release notes, i am starting the agent service using the command line "C:\OracleATS\agentmanager\bin\AgentManagerService.exe -c
    C:\OracleATS\agentmanager\bin\AgentManagerService.conf".
    But what's happening is, OTM is not actually waiting for the applet to load. The moment the forms are invoked and about to load after signing in and selecting the responsibility and menu, the script and forms are crashing. OTM is giving the below error though its not waiting to connect to the forms.
    Failure when running child script GL_JournalEntry_Batch. Caused by: Failed to connect to the Oracle Forms applet after 30 seconds. Verify that the applet launching page opens, and that the Forms Startup Timeout setting is high enough for this site

  • Getting error while executing the SQL ( ver 8.1.7.0.0)

    I am running a simple query involved with joins. When i ran the query with first set of criteria mentioned in the WHERE clause there is no problem. But when I try to run the same just by doing some correction in the WHERE clause, following errors is shown. I tried doing this from TOAD and SQL Analyser. I am getting the same output.
    ORA-01114: IO error writing block to file 4 (block # 524242)
    ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
    OSD-04026: Invalid parameter passed. (OS 524247)
    ORA-01114: IO error writing block to file 4 (block # 524242)
    ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
    OSD-04026: Invalid parameter passed. (OS 524247)
    Can anyone suggest what is this error all about and resolution for the same. Thanks.
    Regards
    Srinivasan B

    Could be a problem with your temp tablespace. Especially if your query is doing a large sort (merge) operation. Usually a simple select does not write any IO. With expetion from the temp tablespace. But I would have expected another error message then.
    Without exactly knowing what the problem is i'm hesitant to give an advice. But rethinking your query could be a good starting point.
    Message was edited by:
    Sven Weller

  • Error while executing PL/SQl on Toad

    Hi,
    I get the following error:
    ORA-04031: UNABLE TO ALLOCATE 64 BYTES OF SHARED MEMORY (“SHARED POOL, “Declared BAL NUMBER(8,2);p;errors;errors….)
    when I try to run
    DECLARE
    BAL NUMBER(8,2);
    BEGIN
    DBMS_OUTPUT.PUT_LINE("HELLO");
    END;
    Not sure why it is coming.
    TIA

    While the double-quotes vs single-quotes should cause an error, I'm not sure the ORA-4031 is the error you should be getting. Might as well fix it and be sure.
    I got something similar to your error yesterday, but it occurred after using too much memory when adding a column to a collection. I got a sucessful run (or probably would have if someone hadn't suddenly shut the database down) after removing unnecessary fields in the collection causing it to use less memory.
    I wonder if someone else could have been doing something unwieldy while you run your script. Odd coincidences do happen. Your script is so small I can't believe it would cause a memory error, barring dbms_output doing something bizarre with the word "Hello" and double quotes.
    Fix the double quotes and see what happens.

Maybe you are looking for

  • Photo date in "Album" view

    Can I view a photo's date while in Album view?  I would then like to be able to change the date in that view (I don't think this is possible). I have a huge number of undated pictures--random pictures that are part of larger events.  If I could see t

  • How to break a Report Field

    Hi, I have a field in a report which is of 300 characters and it comes printed in a straight line. what is the procedure to break it into size of 40 characters. Thanks, Ameya

  • Batch net del + creation drive with same letter

    We use a program that automatic, depending on the day of the week, makes several copy's and starts other programs to update files and afterwards copy these to the appropriate directories and servers. This gave no problems at all in Windows XP pro, bu

  • How to transport LSMW  project

    Can LSMW project be transported? If the answer is yes, how ?

  • I have lost my Lightroom installation CD. Help

    My computer crashed and I had to have a wipe and reload. I have lost my installation CD for Photoshop Lightroom, but have the CD case with product and serial numbers. Is there a way to get a ne CD sent to me or a download that I can get for the inter