一个应用程序中第一次运行如果没有数据(空记录),再次运行时就会出现:“ORA-24347:聚合函数中出现空列”的错误,必须要关闭整个程序再重新运行,才能正常。这个应用程序连接的是ORACLE数据库,到ORACLE数据库中找到对应的视图,检查该视图脚本,看来原来的设计者也发现同样的错误,做了一些修补,不过仍然没有阻止这个错误。
仔细研究了下,终于发现问题原因和解决方法:聚合函数一般是指sum、count等函数,出现“聚合函数中出现空列”的提示,说明在SUM、COUNT这类聚合函数的计算列中有NULL值出现,程序不能执行,而原程序设计者也注意到这一点,使用了nvl函数,想把NULL(空值)转换成0,但是我看了下,他的用法是错误的,他采用的是:nvl(sum(aaa),0),而我的正确写法是:sum(nvl(aaa,0)),这样才能在进行求和运算前把null值转换成0再参与运算,这样才不会提示 “ORA-24347:聚合函数中出现空列”。
>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/1159.html