编程是一个严谨的活:修改一个bug,引入了新的bug

 

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。

 

 


编程是一个严谨的活,每一个改代码都要仔细。

你可能感兴趣的:(编程是一个严谨的活:修改一个bug,引入了新的bug)