下面的查询在 10g (10.2.0.4) 中不起作用,显示 ORA-00904: "A","TEMP_APPL_ID" : invalid identifie

Posted

技术标签:

【中文标题】下面的查询在 10g (10.2.0.4) 中不起作用,显示 ORA-00904: "A","TEMP_APPL_ID" : invalid identifier【英文标题】:Below query is not working in 10g (10.2.0.4) showing ORA-00904: "A","TEMP_APPL_ID" : invalid identifier 【发布时间】:2014-11-10 12:07:08 【问题描述】:

我在 Oracle 10g 10.2.0.4 服务器中遇到了这个问题,在执行下面的查询时显示错误 ORA-00904: "A","TEMP_APPL_ID" : invalid identifier

Update PO_AGENCY_TEMP a  set 
    (massag_value)=(
       SELECT REGEXP_SUBSTR(str,'\d+',1,1) NUM
        FROM
         (SELECT REGEXP_REPLACE(unit_code,'([A-Z]+-\d+-[A-Z]+)','',4,4,'i') str
         FROM PO_AGENCY_TEMP b where a.temp_appl_id = b.temp_appl_id));

而此查询在 oracle 10g 10.2.0.2 服务器中正确执行。

请帮忙。

阿塔努·梅蒂

【问题讨论】:

【参考方案1】:

你可以试试这个:

Update PO_AGENCY_TEMP a 
   set massag_value=(SELECT REGEXP_SUBSTR(REGEXP_REPLACE(unit_code,'([A-Z]+-\d+-[A-Z]+)','',4,4,'i'),'\d+',1,1) num
         FROM PO_AGENCY_TEMP b where a.temp_appl_id = b.temp_appl_id);

据我所知,嵌套子查询的最大级别存在限制,您可以在其中使用父查询中的列。在 Oracle 中等于 1。

然而情况真的很奇怪:

1) 它在 Oracle 9i 中不起作用:https://docs.oracle.com/cd/B10501_01/server.920/a96540/queries8.htm

当子查询引用一个 父语句中引用的表中的列。一个相关的 子查询为父处理的每一行评估一次 陈述。父语句可以是 SELECT、UPDATE 或 DELETE 声明。

2) 然后它开始在Oracle 10g 中工作:https://docs.oracle.com/cd/B13789_01/server.101/b10759/queries007.htm

当嵌套子查询时,Oracle 会执行相关子查询 从引用父语句的表中引用列 any 子查询上方的级别数。父语句可以是 嵌套子查询的 SELECT、UPDATE 或 DELETE 语句。一种 相关子查询对由 家长声明。 Oracle 解析子查询中的不合格列 通过查看子查询中命名的表,然后查看表 在父语句中命名。

3) Oracle 11g 状态与 Oracle 10g 相同:https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries007.htm#SQLRF52340

不过人家说不行:https://community.oracle.com/message/3405285https://community.oracle.com/thread/380604

我在 Oracle 10g/11g 中尝试了“2 级深度”相关子查询,但没有成功。但我找不到任何“可靠”的解释。

【讨论】:

以上是关于下面的查询在 10g (10.2.0.4) 中不起作用,显示 ORA-00904: "A","TEMP_APPL_ID" : invalid identifie的主要内容,如果未能解决你的问题,请参考以下文章

使用子查询更新在雪花中不起作用

Datetime BETWEEN 语句在 SQL Server 中不起作用

不在,在声明中不起作用(预订)

自动 CSV 文件生成,在 Oracle 10g 中具有不同列数的两个标题级别的标题

Oracle 10g 10.2.0.4的group by BUG |ORA-00979 not a GROUP BY expression|

媒体查询在 React 中不起作用