有一个机构表,存10个机构, is_use=‘0’ 意味着无效,不统计, is_use=‘1’ 意味着有效,参与统计,先看sql:
这个是公共的sql部分,往后添加条件,即可查相应结果:
查昆明能查出结果,但是查云南的时候,就报错,所以一怒之下,把ynCheckSql语句结果查出来,一条一条检验,还真发现了问题:
针对德宏这一个地方,查询的时候报了 ORA-01722: 无效数字 错误,仔细查看数据源,发现数据也没什么问题,因为计算过程中,会报除数不能为0的错,而该条数据有一个值( 该值是分母,也就是除数 ),我们都知道,除数不能为0,所以Oracle针对除数为0的情况,有一个函数:
所以为了直接返回结果,除数为0时直接返回 - 如这个sql语句: ROUND(DECODE(bapersonal_plan,0,'-',(rp5_year_inc+rp6_year_inc+rp7_year_inc+rp8_year_inc+rp9_year_inc+rp10_year_inc)/bapersonal_plan100),3) perPlan
我们都知道ROUND函数是保留小数位数,如果返回 - ,ROUND函数肯定会包无效数字错误,所以如果除数为0,直接返回特殊字符9999即可,后面再对9999进行单独处理!!不用增加临时表空间,总是100%。
只有重启动数据库,才能释放。
B]临时表空间为什么总是100%, 不自动释放?
我在建实体化视图的时候个别create mv语句
总是报ORA-01652: unable to extend temp segment by 1024
我的临时表空间给了10G了,已经很大了。
而且现在是100%被占用了。
临时表空间怎么样才能清空,重建?
除了增加临时表空间,有没有其他解决办法来克服这个问题?
你的系统缺的不是临时表空间
查询一下你的mv指定的目标表空间
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)