用友nc的web service接口报500,跟踪代码后发现是一个sql查询报错引起的。
该sql是多个表通过left join on连接起来的。其中一个表很多字段另一个表的一个字段关联,
一查询就报 ORA-03113: 通信通道的文件结束,不过去掉case和decode或者中文就没问题。
其他sql都可以调case和decode或者包含中文。就这个sql不行。
sql总长度3506。小于pl/sql的50k和oracle的64k每行也不超过sqlplus的2099。
这个sql类似于如下sql:
select a.name
b1 .c1 ,left join table_b b29 on b29.c = a.c29
请教诸位大神这个sql该如何优化?
报错的原因可能是什么?
用友的人说可能是表空间的问题,也可能是sql太长的问题(dba和我都不认为是sql太长的问题),说可能重启服务器就好了,事实上重启完服务器还是这个问题。
跟踪日志看看具体是什么错误
selecta.name,
casewhenb.c=a.c1thenb.c1elseNULLendasc1,
……
casewhenb.c=a.c29thenb.c29elsenullendasc29
fromtablebb,tableaa;
用这个行不。
不行版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。