oracle下left join查询报ora-03113:一表多字段另一表同一字段关联
用友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 ,
b2 .c2 ,
b4 .c4 ,
b5 .c5 ,
b6 .c6 ,
b8 .c8 ,
b9 .c9 ,
b10.c10 ,
b11.c11 ,
b12.c12 ,
b14.c14 ,
b15.c15 ,
b16.c16 ,
b18.c18 ,
b19.c19 ,
b20.c20 ,
b21.c21 ,
b22.c22 ,
b24.c24 ,
b25.c25 ,
b26.c26 ,
b28.c28 ,
b29.c29 ,
from table_a a
left join table_b b1 on b1.c = a.c1
left join table_b b2 on b2.c = a.c2
left join table_b b4 on b4.c = a.c4
left join table_b b5 on b5.c = a.c5
left join table_b b6 on b6.c = a.c6
left join table_b b8 on b8.c = a.c8
left join table_b b9 on b9.c = a.c9
left join table_b b10 on b10.c = a.c10
left join table_b b11 on b11.c = a.c11
left join table_b b12 on b12.c = a.c12
left join table_b b14 on b14.c = a.c14
left join table_b b15 on b15.c = a.c15
left join table_b b16 on b16.c = a.c16
left join table_b b18 on b18.c = a.c18
left join table_b b19 on b19.c = a.c19
left join table_b b20 on b20.c = a.c20
left join table_b b21 on b21.c = a.c21
left join table_b b22 on b22.c = a.c22
left join table_b b24 on b24.c = a.c24
left join table_b b25 on b25.c = a.c25
left join table_b b26 on b26.c = a.c26
left join table_b b28 on b28.c = a.c28
left join table_b b29 on b29.c = a.c29
请教诸位大神这个sql该如何优化?
报错的原因可能是什么?
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

评论(4)

发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。