一个逗号引起的异常
作者: 葛屹肃 | 日期: 2021-06-26 | 分类: 个人杂谈
今天花了2小时解决了因一个逗号引起的异常,唉,太浪费时间了,这就是一个小失误所付出的代价。
以下是出错SQL的逻辑:
IF INSTR(IN_CODE,’,',1,15) > 0 THEN
PACK_TYPE := 10;
TEMP_C_OC := SUBSTR(IN_CODE,INSTR(IN_CODE,’,',1,15)+1,LENGTH(IN_CODE));
ELSIF INSTR(IN_CODE,’,',1,7) > 0 THEN
PACK_TYPE := 4;
TEMP_C_OC := SUBSTR(IN_CODE,INSTR(IN_CODE,’,',1,7)+1,LENGTH(IN_CODE));
ELSIF INSTR(IN_CODE,’,',1,6) > 0 THEN
PACK_TYPE := 1;
TEMP_C_OC := SUBSTR(IN_CODE,INSTR(IN_CODE,’,',1,6)+1,LENGTH(IN_CODE));
ELSIF INSTR(IN_CODE,’,',1,5) > 0 THEN
PACK_TYPE := 2;
TEMP_C_OC := SUBSTR(IN_CODE,INSTR(IN_CODE,’,',1,5)+1,LENGTH(IN_CODE));
ELSE
KEY_LC := -1;
HINT := ‘提示:拆包条码不正确,请刷包板管理条码! ‘;
GOTO END_PROCEDURE;
END IF;
以上SQL,红字部分写成这样:INSTR(IN_CODE,’,',5) > 0,缺少一个逗号与参数,结果意义完全不一样,而且这个错误编译完全没问题,不细看根本发现不了问题所在。
这个问题是用户反馈的,前面3种情况都是正常,只有当出现第4种情况时才会出现异常,像这种小错误放在几百行的语句中,根本无法发现,后来通过输出状态值,才定位到这个错误。
这是一个客户成品仓打标签的系统,这个系统做得有点复杂了,成品仓面对几百个客户,大多数客户都有自己标准的标签,因此标签的数据要兼容的情况太多,全部放在一个过程中处理,每次更改流程都是相当麻烦。
工作嘛,也就是这样,只能能完成就好,过程也许有点难受,只要最终按时完成即是街大欢喜!
文章链接:https://www.geyisu.com/2014.html