我的内部子查询是正常工作,它从以下查询中的line 3
开始。
但是当我在它上面进行查询时,它显示错误ORA-00604:在递归SQL级别1发生错误
SELECT PU , CA , COUNT(CA) CNT FROM
(
SELECT CASE
WHEN DP.STRVAL = 'A' then 'A1'
ELSE 'OTHERS' END PU,
(CASE WHEN UPPER(CP.STRVAL) = 'YES' THEN 'YES' ELSE 'NO' END) CA
FROM DM.MAP AP
LEFT OUTER JOIN DM.MAC BP ON AP.ISSUEID = BP.ISSUE AND BP.CF = 'RD'
LEFT OUTER JOIN DM.MAC CP ON AP.ISSUEID = CP.ISSUE AND CP.CF = 'CA'
LEFT OUTER JOIN DM.MAC DP ON AP.ISSUEID = DP.ISSUE AND DP.CF = 'PU'
) AB
GROUP BY PU, CA
上面的查询是在第一个左连接的行中抛出错误
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
00604. 00000 - "error occurred at recursive SQL level %s"
*Cause: An error occurred while processing a recursive SQL statement
(a statement applying to internal dictionary tables).
*Action: If the situation described in the next error on the stack
can be corrected, do so; otherwise contact Oracle Support.
Error at Line: 15 Column: 19
我没有看到此查询的任何问题,但不确定其抛出错误的原因。
答案 0 :(得分:3)
可能的问题是:
ORA-16000:数据库打开以进行只读访问
当您应用 JOIN 和 GROUP BY 时,可能需要一些 TEMP 空间。并且您没有权限访问临时空间。
检查您是否有临时表空间。
此外,
DM.MAP
您可以通过以DM用户身份登录来尝试查询吗?
如果它是本地管理的临时表空间,那么使用适当的权限,应该没有问题。但是,我有这种强烈的感觉,你没有所需的特权。
我的建议,请咨询您的DBA,您的DBA可能会解决一些重要问题。