游标 fetch 无数据时返回结构需求
rawData=A23.cursor(sqlDetail)
rawData=rawData.derive(dictMap.find([“ERP_REPAIR_WORKER_TYPE”,work_type]).code_name:work_type_name,dictMap.find([“Erp_Repair_Type”,repair_type]).code_name:repair_type_name,dictMap.find([“Erp_Repair_Position”,position]).code_name:position_name,dictMap.find([“erp_repair_direction”,direction]).code_name:direction_name,dictMap.find([“YES_NO”,is_accident]).code_name:is_accident_name,dictMap.find([“YES_NO”,return_to_repair]).code_name:return_to_repair_name)
resultList=rawData.fetch()
游标如果查询出来是没数据的 resultList 会是空,这样就获取不到最终的表结构了,需要自己创建虚表很麻烦,如再手动用 query 方法调用一下又怕查询慢,因为本身就是因为慢才用游标的。
希望从产品级别迭代一下,resultList 可以拿得到完整的结构,包含 derive 的字段

SPL 的游标可能返回无结构的序列和多结构的排列,没有取到返回值时确实不知道结构,这有点两难,看看某些特殊情况是不是能返回这个信息
通常继续计算并没有影响,但有时报表需要返回一个空结构,就只能 return ifn(…, create(…) ) 这样写
这就麻烦了,是否可以加个 @m 等参数,明确是要返回的,可以返回的,因为用 create 那些参数还要再写一次,以及附加的 derive 的字段也还要再加一次,如后面有加减字段很容易遗漏,我现在的方式是用原来的查询语句加个 where 1!=1 和条件,再手动 dervie 一次输出结构,这样还是不够好,可以直接加个 @m 是最理想的。如出现不能计算后不能返回给出报错,或这时返回 null,这样会好很多,也更理想,而且他最终也是调用数据的查询吧,所以数据库有返回结构,这边肯定是可以的拿的到的,完全不用我上面再去拼接个 1!=1,然后再搜集一下哪些是加列的操作,加上去就好了
程序已更新,cs.fetch() 增加 @t 选项,对某些已知数据结构的游标,无返回值时返回成空数据结构。请前往下载贴中下载最新的 esproc-bin.jar 文件