我正在尝试针对具有XMLTYPE列的表执行相当简单的Oracle查询:
Select POB_CODPOL, CODSIS From (
Select T1.POB_CODPOL, EXTRACTVALUE(T1.POB_XMLPOL, '/Polbas/polfun[nomfun="filterBySystem"]/extpar[codele="codsis"]/valele/text()') CODSIS
From TDTX_POLITICA_CLOB T1
Where T1.POB_CODEMP = '001840'
)
Group By POB_CODPOL, CODSIS
这引发了ORA-00979 Not a GROUP BY Expression
,我真的不明白。
更糟糕的是:当我执行完全相同的查询时,但使用简化的XPATH查询确实工作:
Select POB_CODPOL, CODSIS From (
Select T1.POB_CODPOL, EXTRACTVALUE(T1.POB_XMLPOL, 'Polbas/codpol/text()') CODSIS
From TDTX_POLITICA_CLOB T1
Where T1.POB_CODEMP = '001840'
)
Group By POB_CODPOL, CODSIS
看起来Oracle在使用[nomfun="filterBySystem"]
时不喜欢GROUP BY
之类的条件(没有分组子句,一切正常)。
有关为何会发生这种情况的任何想法吗?
编辑:内部查询的结果非常简单:
答案 0 :(得分:1)
EXTRACTVALUE
已被弃用。
这个应该有效:
WITH t as
(SELECT T1.POB_CODPOL, x.CODSIS
FROM TDTX_POLITICA_CLOB T1
NATURAL JOIN XMLTABLE('/Polbas/polfun[nomfun="filterBySystem"]/extpar[codele="codsis"]/valele'
PASSING POB_XMLPOL COLUMNS
CODSIS VARCHAR2(50) PATH '/') x
Where T1.POB_CODEMP = '001840')
SELECT POB_CODPOL, CODSIS
FROM t
GROUP BY POB_CODPOL, CODSIS;
答案 1 :(得分:1)
当表格式为二进制XML时,存在错误28588011:“ ORA-00979:不是按表达式分组”。
Severity 2 - Severe Loss of Service
Created 02-Sep-2018
Status 11 - Code/Hardware Bug (Response/Resolution)
WORKAROUND No
我想他们不会解决它。但是提示 NO_XML_QUERY_REWRITE (我也用于其他与XML相关的错误)也对我有用。