1,需求中要求,将一个varchar类型字段:比如 acid,加(算术加)上一个数字,其结果作为一个新的ID:
v_cardNo varchar(12)。
逻辑代码如下:
......
v_cardNo := acid+ 278122220258 --(两次隐形转换:字符-》数字,数字-》字符)
......
2,但是在实际做的时候发先acid中含有非数字字符,在采用算术加时会出错:ORA-01722: invalid number。
为了fix这个bug,才用了如下代码:
BEGIN
--{
SELECT acid+ 278122220258
INTO v_cardNo
FROM dual;
--}
EXCEPTION
WHEN OTHERS THEN
v_cardNo := acid || '278122220258';
END;
3,以上代码看是没有问题,运行时却出了bug:ORA-06502: PL/SQL: numeric or value error: character string buffer too small。
v_cardNo := acid || '278122220258';
忘了把v_cardNo 的长度改为:24。
编程是一个严谨的活,每一个改代码都要仔细。