📄 tsl_testa1.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 + -