DB2
时间:2007-12-23 来源:不详 作者:迈克DB
--由于db2和oracle的不同,db2必须先创建一个oracle相连的别名ADMINISTRATOR.*,而不像oracle直接用@to_jif下面是oracl的源码
--v_sql_str:='updatetransfer_task
--setrows_cnt=rows_cnt (selectcount(*)
--fromcal.acct_item_billingday_'||rec.bill_task_id||'@to_jf)
--wheretransfer_id='||in_transfer_id;
--updatebydengl2002-12-08
setstmt='createnicknameADMINISTRATOR.ACCT_ITEM_BILLINGDAY_'||char(c_bill_task_id)||'forbill.cal.acct_item_billingday_'||char(c_bill_task_id);
--记录
setstate='创建别名'||'ADMINISTRATOR.ACCT_ITEM_BILLINGDAY_'||char(c_bill_task_id);
callipd.sp_exec_dsql(stmt,o_err_no);
--o_err_no是返回的SQLCODE
ifo_err_no<>0
then
updateipd.transfer_task
setdeal_flag=-1
wheretransfer_id=in_transfer_id;
seto_err_msg='处理'||state||'出错'||'错误代码SQLCODE:'||CHAR(o_err_no);
seto_err_no=1;
return0;
endif;
setv_sql_str='updateipd.transfer_tasksetrows_cnt=rows_cnt (selectcount(*)from'||'ADMINISTRATOR.ACCT_ITEM_BILLINGDAY_'||char(c_bill_task_id)||'wheretransfer_id='||char(in_transfer_id); 织梦好,好织梦
callipd.sp_exec_dsql(v_sql_str,o_err_no);
ifo_err_no<>0
then
updateipd.transfer_task
setdeal_flag=-1
wheretransfer_id=in_transfer_id;
seto_err_msg=char(in_TRANS_TYPE_id)||'传送出错!SQLCODE:'||char(o_err_no);
seto_err_no=1;
return0;
endif;
commit;
endloopfetch_loop1;
closebill_task;
--汇总数据写入完毕
--建立接口表并插入数据
---整理表空间。
callipd.bi_settle_tablespace(in_Transfer_id,
o_err_no,
o_err_msg);--调用此过程,检测表空间
--返回值不为0,则不执行返回
setstate='整理表空间';
ifo_err_no<>0
then
updateipd.TRANSFER_TASK
setDEAL_FLAG=-1
whereTransfer_id=in_Transfer_id;
commit;
seto_err_msg='处理'||state||'出错'||'错误代码SQLCODE:'||CHAR(o_err_no);
seto_err_no=1;
return0;
endif;
--创建任务需要的接口表并把多个表的数据整合到一个表中去,假如是oracle就要使用零时表而db2用别名就代替了
setstmt='createtableipd.'||in_TRANSFER_name; copyright dedecms
callipd.sp_exec_dsql(stmt,o_err_no);
setstate='创建接口表ipd.'||in_TRANSFER_name;
ifo_err_no<>0
then
updateipd.TRANSFER_TASK
setDEAL_FLAG=-1
whereTransfer_id=in_Transfer_id;
commit;
seto_err_msg='处理'||state||'出错'||'错误代码SQLCODE:'||CHAR(o_err_no);
seto_err_no=1;
return0;
endif;
--建表完毕开始组合sql语句
openbill_taskusingv_cycle_str;
fetch_loop2:
loop
fetchbill_taskintoc_bill_task_id;
ifn_num=1
then
setv_sql_str='interintoipd.'||in_TRANSFER_name||'select*fromACCT_ITEM_BILLINGDAY_'||char(c_bill_task_id);
else
setv_sql_str=v_sql_str||'unionselect*fromADMINISTRATOR.ACCT_ITEM_BILLINGDAY_'||char(c_bill_task_id);
endif;
setn_num=n_num 1;
endloopfetch_loop2;
--组合完毕
文章评论
共有位Admini5网友发表了评论 查看完整内容