最近用户反映,自动配线功能不能正常运行,但在用手工配时,能成的配出来。
在查找原因时,主要查找存储过程,因为这个功能主要是调用存储过程来实现的。
查找到最近,发现有一条语句,明明的记录,但是不能返回正确的记录数,老是返回0:
SELECT COUNT(T.AREAID) FROM DL_LINE T WHERE T.STARTLINEID =1111;
但是在表 DL_LINE 中,是有5条满足条件的记录,COUNT(T.AREAID) 用来统计统符合条件的记录数,
但是在执行时,返回 0 条。最后一查看,这几条记录的 AREAID 全是NULL,没有值。
改用 SELECT COUNT(*) FROM DL_LINE T WHERE T.STARTLINEID =1111; 执行后,返回了正确的结果 5 条,
回头一看,造成这种的情况的原因有:
第一:COUNT 函数只能统计有具体值的字段,如果指定具体的字段,如 COUNT(FIELD_A),则如果FIELD_A列有空值时,对有空值的记录不统计。
第二:要注意字段的NULL,这种值的字段,容易出错。最好用 NVL 给出默认值。