文档解释
ORA-32035: unreferenced query name defined in WITH clause
Cause: There is at least one WITH clause query name that is not referenced in any place.
Action: remove the unreferenced query name and retry
ORA-32035错误是Oracle数据库在检测SQL语句时发出的错误消息,提示用户在WITH子句中定义了未引用的查询名称。在WITH子句中,查询名称定义了一个临时视图或子查询,其中只能够在它的范围内使用,而无法被其他查询引用。
官方解释
ORA-32035是SQL语句解析器在检测SQL语句时发出的一种消息,表示在WITH子句中定义的查询名称未被使用或引用到。
常见案例
案例1:
语句:
SELECT * FROM (with t1 as (
select * from tb_p
)
select * from tb_c
)
此处t1定义无法被其他查询引用,所以会发出ORA-32035错误消息。
案例2:
语句:
SELECT salary
FROM (WITH SA_EMP(ID, SALARY) AS
(SELECT EMPID, SALARY FROM EMPLOYEES)
SELECT * FROM SA_EMP);
此处SA_EMP定义未被使用或引用,会发出ORA-32035错误消息。
一般处理方法及步骤
处理此错误的常见方法是,在WITH子句中将未使用的查询名称删除,或者添加相关的引用。
1.检查SQL语句,寻找未引用的查询名称定义;
2.确保在WITH子句中定义的查询名称在其他子句中被引用;
3.如果未被引用,则删除未被使用的查询名称定义或者去掉WITH子句,或者添加相关的引用。