Oracle 10.2.0.4 sql关联查询语句中含有 connect by 导致报错出现ORA-00600

栏目: 数据库 · 发布时间: 6年前

内容简介:写了个视图导致出现报错:网上说是Oracle 10.2.0.4和10.2.0.3版本的一个bugSELECT A.*FROM  PL_PLAN_BASE  Aleft JOIN

写了个视图导致出现报错:网上说是Oracle 10.2.0.4和10.2.0.3版本的一个bug

SELECT A.*FROM  PL_PLAN_BASE  A

left JOIN

(SELECT B.CATEGORY_ID,

REGEXP_SUBSTR(SYS_CONNECT_BY_PATH( B.CLASS_NAME,'/'),'[^/]+',1,1,'i')  FIRST_NAME,

REGEXP_SUBSTR(SYS_CONNECT_BY_PATH( B.CLASS_NAME,'/'),'[^/]+',1,2,'i')  SECOND_NAME,

B.CLASS_NAME                                                          THIRD_NAME

FROM  PC_CATEGORY_BASE B

START WITH B.PARENT_ID IS NULL

CONNECT BY  B.PARENT_ID=PRIOR B.CATEGORY_ID  ) C  ON  A.CATEGORY_ID=C.CATEGORY_ID 

LEFT JOIN

(SELECT DEPT_NAME,DEPT_CODE FROM  BI_DEPT ) D ON D.DEPT_CODE=A.APPLY_DEPT_CODE

LEFT JOIN

(SELECT  T.CATEGORY_ID,D.DEPT_NAME,T.ORG_CODE

FROM  PC_CATEGORY_ORG T,BI_DEPT D

WHERE  T.CENTRALIZED_DEP_CODE=D.DEPT_CODE

)E  ON (E.CATEGORY_ID =a.Category_Id  AND E.ORG_CODE=A.CRT_ORG_CODE)

where a.data_state='0'

and a.plan_org_name not like '%测试%'

and a.plan_material_name not like '%测试%' 

and a.crt_org_name not like '%null%';

Oracle 10.2.0.4  <a href='https://www.codercto.com/topics/18630.html'>sql</a> 关联查询语句中含有 connect by 导致报错出现ORA-00600

1  如果关联语句不是很多是不会报错:比如下面这样是可以查出来

SELECT A.*FROM  PL_PLAN_BASE  A

left JOIN

(SELECT B.CATEGORY_ID,

REGEXP_SUBSTR(SYS_CONNECT_BY_PATH( B.CLASS_NAME,'/'),'[^/]+',1,1,'i')  FIRST_NAME,

REGEXP_SUBSTR(SYS_CONNECT_BY_PATH( B.CLASS_NAME,'/'),'[^/]+',1,2,'i')  SECOND_NAME,

B.CLASS_NAME                                                          THIRD_NAME

FROM  PC_CATEGORY_BASE B

START WITH B.PARENT_ID IS NULL

CONNECT BY  B.PARENT_ID=PRIOR B.CATEGORY_ID  ) C  ON  A.CATEGORY_ID=C.CATEGORY_ID 

LEFT JOIN

(SELECT DEPT_NAME,DEPT_CODE FROM  BI_DEPT ) D ON D.DEPT_CODE=A.APPLY_DEPT_CODE 

2 如果关联语句太多就会报错 比如上面的.

3 解决办法:

1 修改SQL语句,不要这个递归,去掉这个connect by ;

2 这么修改,修改这个参数调整优化器的版本:  alter session set optimizer_features_enable='10.2.0.1';

3 修改这个参数:_optimizer_connect_by_cost_based 为 false;

我们这边是针对本session的进行语句级修改,只针对这个语句,所以不影响整个库:

ALTER SESSION SET "  _optimizer_connect_by_cost_based  "=false;

我这边选择第三种,但是我们这个是要经常查询的,我可以直接加到 hint 里面去,就可以:

CREATE OR REPLACE VIEW V_TW_PURCHASE_PL_STAT1 AS

SELECT  /*+ OPT_PARAM('_optimizer_connect_by_cost_based' 'false') */

A.PLAN_ID,                                                                               

DECODE(A.PLAN_TYPE,'0','年初计划','1','中期调整',A.PLAN_TYPE)          PLAN_TYPE,       

A.PLAN_YEAR,                                                                             

A.CATEGORY_ID,                                                                           

C.FIRST_NAME,   

.................................

FROM  PL_PLAN_BASE  A

left JOIN

(SELECT B.CATEGORY_ID,

REGEXP_SUBSTR(SYS_CONNECT_BY_PATH( B.CLASS_NAME,'/'),'[^/]+',1,1,'i')  FIRST_NAME,

REGEXP_SUBSTR(SYS_CONNECT_BY_PATH( B.CLASS_NAME,'/'),'[^/]+',1,2,'i')  SECOND_NAME,

B.CLASS_NAME                                                          THIRD_NAME

FROM  PC_CATEGORY_BASE B

START WITH B.PARENT_ID IS NULL

CONNECT BY B.PARENT_ID=PRIOR B.CATEGORY_ID  ) C  ON  A.CATEGORY_ID=C.CATEGORY_ID

LEFT JOIN

(SELECT DEPT_NAME,DEPT_CODE FROM  BI_DEPT ) D ON D.DEPT_CODE=A.APPLY_DEPT_CODE

LEFT JOIN

(SELECT  T.CATEGORY_ID,D.DEPT_NAME,T.ORG_CODE

FROM  PC_CATEGORY_ORG T,BI_DEPT D

WHERE  T.CENTRALIZED_DEP_CODE=D.DEPT_CODE

)E  ON (E.CATEGORY_ID =a.Category_Id  AND E.ORG_CODE=A.CRT_ORG_CODE)

where a.data_state='0'

and a.plan_org_name not like '%测试%'

and a.plan_material_name not like '%测试%'

and a.crt_org_name not like '%null%';

再次查询就不会报错:可以查出来。

Oracle 10.2.0.4 sql关联查询语句中含有 connect by 导致报错出现ORA-00600

这边是针对该版本,后面的版本ORACLE 是修复了

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-05/158456.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

An Introduction to the Analysis of Algorithms

An Introduction to the Analysis of Algorithms

Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99

This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具