⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsl_testa1.txt

📁 basicaly its pro*c program
💻 TXT
字号:
#include "retek_2.h"
EXEC SQL INCLUDE SQLCA.H;
long SQLCODE;
init_parameter parameter[] =
{
   "commit_max_ctr",  "uint",     "",
 "thread_val",      "string",   "",
/*	   "num_threads",     "string",   "",
	   "driver_name",     "string",   "S",*/
	  "item",            "string",   "S"
   "supplier",       "string",      "S"
};

#define NUM_INIT_PARAMETERS (sizeof( parameter) / sizeof( init_parameter))

/* global variables for threading and restart/recovery */
unsigned int pi_commit_max_ctr;
char ps_thread_val[NULL_THREAD];
/*char ps_num_threads[NULL_THREAD];
char ps_driver_name[MAX_DRIVER_NAME_LEN];*/
char ps_item[NULL_ITEM];
char ps_supplier[NULL_SUPPLIER];
struct driver_cursor_array
{
char (*s_item)[NULL_ITEM];
char (*s_supplier)[NULL_SUPPLIER];
unsigned int i_cur_idx;
}pa_dc_fetch;
int init();
int process();
int size_arrays(void);
void free_arrays();
int final();
int main(int argc, char* argv[])
{
   char* function_name = "main";
   long  li_init_results;   
   char  ls_log_message[NULL_ERROR_MESSAGE];
   long  li_final_return; 
   
   if (LOGON(argc, argv) < 0)
   {
      strcpy(ls_log_message,"Aborted in logon");
      LOG_MESSAGE(ls_log_message);
      return(FAILED);
   }
strcpy(PROGRAM,"tsl_test1");
if (init() < 0)
   {
     LOG_MESSAGE("Init terminated with errors !!!!!!!!!!!");
     return(FAILED);
   }

   if (process() < 0)
   {
     LOG_MESSAGE("Process terminated with errors !!!!!!!!!!!");
     return(FAILED);
   }

   if (final() < 0)
   {
     LOG_MESSAGE("Final terminated with errors !!!!!!!!!!!");
     return(FAILED);
   }
   else
   {
     LOG_MESSAGE("Terminated OK");
   }
return(SUCCEEDED);
}    
 /* End of main() */

int init()
{
   char *function = "init";
   int  li_init_return;
   
   li_init_return = retek_init(NUM_INIT_PARAMETERS,
                               parameter,
                               &pi_commit_max_ctr,
                               ps_thread_val,
					                    /* ps_num_threads,
					                     ps_driver_name,*/
                               ps_item,
                               ps_supplier);

   if (li_init_return != 0)
      return(li_init_return);
   if(pi_commit_max_ctr > MAX_ORACLE_ARRAY_SIZE)
      {
        pi_commit_max_ctr=MAX_ORACLE_ARRAY_SIZE;
        if(limit_commit_max_ctr( pi_commit_max_ctr < 0))
          return(FATAL);
        }
        if(size_arrays() < 0)
          {
            return(FATAL);
          }
          return(OK);
      
   
} /* end init */

int process()
{
   char *function = "process";
   /* Declare Variables */
   char ls_item[NULL_ITEM];
 char  ls_supplier[NULL_SUPPLIER];
   long ll_recs_returned  = 0; 
   long ll_recs_completed = 0; 
   int  li_cursor_empty   = 0;

   /* Declare Cursor */
   EXEC SQL DECLARE c_item_supplier
       CURSOR FOR SELECT item,
                        supplier
                                           FROM item_supplier 
                        
                  WHERE rownum<20 
                     
                    /*AND b.driver_name  = :ps_driver_name
         AND b.thread_val   = TO_NUMBER(:ps_thread_val)
          AND a.supplier=b.driver_value
	 AND b.num_threads  = TO_NUMBER(:ps_num_threads)*/
                    AND (item > NVL(:ps_item, '-999'))/* OR
                         (item =  :ps_item AND supplier > NVL(:ps_supplier, '-999')))*/  
                  ORDER BY 1,2;
          
   /* CREAT MEMORY ALLOCATION for the fetched variable*/

   
   
   EXEC SQL OPEN c_item_supplier;
   
   if (SQL_ERROR_FOUND)
   {
      sprintf(err_data, "Opening c_item_supplier");
      strcpy(table, "item_supplier");
      WRITE_ERROR(SQLCODE,function,table,err_data);
      return(-1);
   }

   while(!li_cursor_empty)
   {
      /* fetch cursor */
      EXEC SQL FOR :pi_commit_max_ctr FETCH c_item_supplier
                INTO :pa_dc_fetch.s_item,
                     :pa_dc_fetch.s_supplier;
                          /* delete here if needed */
      if SQL_ERROR_FOUND
      {
         sprintf(err_data, "Fetch c_item_supplier");
         strcpy(table, "item_supplier");
         WRITE_ERROR(SQLCODE,function,table,err_data);
         return(-1);
      }
      
	 
	       /* if no data found then break out of while loop */
      if (NO_DATA_FOUND)
         li_cursor_empty=1;
      
       
            
     /* fprintf (stderr,"ITEM:%s Supplier:%s  \n", ls_item, li_supplier); */
   
  ll_recs_returned = NUM_RECORDS_PROCESSED - ll_recs_completed; 
      ll_recs_completed = NUM_RECORDS_PROCESSED; 
      if (ll_recs_returned == 0) 
         break; 
 /* printf("%d\n%d",  ll_recs_returned, ll_recs_completed ); */
   
     /*if(NUM_RECORDS_PROCESSED > 10)
      return(FATAL);*/
       
      for(pa_dc_fetch.i_cur_idx=0;pa_dc_fetch.i_cur_idx < ll_recs_returned;pa_dc_fetch.i_cur_idx++)
        {
          strcpy(ls_item,pa_dc_fetch.s_item[pa_dc_fetch.i_cur_idx]);
          strcpy(ls_supplier,pa_dc_fetch.s_supplier[pa_dc_fetch.i_cur_idx]);
          printf("%s\n%s\n",ls_item,ls_supplier);
        } 
  if (retek_force_commit(1,
                       pa_dc_fetch.s_item[ll_recs_returned-1])< 0)
                       /*pa_dc_fetch.s_supplier[ll_recs_returned-1]) < 0)*/
         return(-1);
      
  return(OK);
  EXEC SQL CLOSE c_item_supplier;
  if SQL_ERROR_FOUND
      {
         sprintf(err_data, "close c_item_supplier");
         strcpy(table, "item_supplier");
         WRITE_ERROR(SQLCODE,function,table,err_data);
         return(-1);
      }
  
   } /* end while */

} /* end process */
     
int size_arrays(void)
{
  char *function="size_array";
  CALLOC_STRING(pa_dc_fetch.s_item,pi_commit_max_ctr,NULL_ITEM);
  CALLOC_STRING(pa_dc_fetch.s_supplier,pi_commit_max_ctr,NULL_SUPPLIER);
return(OK);
}
void free_arrays()
{
  char *function="free_array";
  free(pa_dc_fetch.s_item);
  free(pa_dc_fetch.s_supplier);
  
}
int final()
{
   char *function = "final";
   int li_final_return=0;
   free_arrays();
   li_final_return = retek_close();
   return(li_final_return);
} /* end final */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -