范例(cnmq001):
原:每次查询都把数据全部查询到临时表后再筛选;
现:查询到临时表的时候,增加可行的筛选条件,再二次筛选临时表的数据,进行优化;
1)临时表创建:
PRIVATE FUNCTION cnmq001_cr_tmp() DROP TABLE cnmq001_tmp CREATE TEMP TABLE cnmq001_tmp( nmbc002 LIKE nmbc_t.nmbc002, nmbc002_desc LIKE type_t.chr500, nmbc005 LIKE nmbc_t.nmbc005, nmbcdocno LIKE nmbc_t.nmbcdocno, nmbcseq LIKE nmbc_t.nmbcseq, nmbc006 LIKE nmbc_t.nmbc006, nmbc007 LIKE nmbc_t.nmbc007, nmbc007_desc LIKE nmajl_t.nmajl003, nmbcud001 LIKE nmbc_t.nmbcud001, nmbc003 LIKE nmbc_t.nmbc003, nmbc003_desc LIKE type_t.chr80, inamt LIKE type_t.num20_6, nmbc100 LIKE nmbc_t.nmbc100, nmbc101 LIKE nmbc_t.nmbc101, outamt LIKE type_t.num20_6, nmbccrtid LIKE nmbc_t.nmbccrtid, nmbccrtid_desc LIKE type_t.chr30, nmbccrtdt LIKE nmbc_t.nmbccrtdt ) BEGIN WORK #170406-00001#1 放到事务里 CALL cnmq001_ins_tmp() COMMIT WORK END FUNCTION
2)TIPTOP没有直接的split分割函数,所以走点弯路:
LET l_token = base.StringTokenizer.create(ps_token,",")
WHILE l_token.hasMoreTokens()
LET ls_token = l_token.nextToken()
CALL cl_schedule_chk_mapping(ls_token,pd_field)
END WHILE
PRIVATE FUNCTION split_itemcount(p_arg1,p_arg2) DEFINE p_arg1 STRING DEFINE p_arg2 STRING DEFINE l_cnt INT DEFINE tok BASE.StringTokenizer #LET tok = base.StringTokenizer.create(p_arg1,p_arg2) LET tok = base.StringTokenizer.createExt(p_arg1,p_arg2,"",TRUE) LET l_cnt = tok.countTokens() RETURN l_cnt END FUNCTION
PRIVATE FUNCTION split(p_arg1,p_arg2,p_arg3) DEFINE p_arg1 STRING DEFINE p_arg2 STRING DEFINE p_arg3 INT DEFINE l_cnt INT DEFINE l_idx INT DEFINE l_retstr STRING DEFINE l_str STRING DEFINE tok BASE.StringTokenizer INITIALIZE l_retstr TO NULL #LET tok = base.StringTokenizer.creat