【问题标题】:Issue with Oracle SQLOracle SQL 的问题
【发布时间】:2019-02-06 21:33:43
【问题描述】:

谁能告诉我为什么会出现以下错误:

"ORA-00904: "MESSAGE_BODY": 标识符无效"

当我对 Oracle 数据库运行以下查询时?

SELECT COMMERCIAL_ID, MIN(dbms_lob.substr(MESSAGE_BODY, 3999, 1)) AS MESSAGE_BODY
FROM DWH_F_MP_MESSAGE_VW
GROUP BY COMMERCIAL_ID;

MESSAGE_BODY 字段是一个 CLOB

【问题讨论】:

  • 仔细查看第一行末尾的孤立引号。
  • 当我进入 SO 时,这只是一个错字……那不是问题。我已经进行了相应的编辑;谢谢

标签: sql oracle


【解决方案1】:

DWH_F_MP_MESSAGE_VW 似乎不包含名为 MESSAGE_BODY 的列。

这是一个演示:

SQL> create table dwh_f_mp_message_vw (commercial_id number, message_body clob);

Table created.

SQL> insert into dwh_f_mp_message_vw values (1, 'Littlefoot');

1 row created.

SQL> select commercial_id, min(dbms_lob.substr(message_body, 3999, 1))
  2  from dwh_f_mp_message_vw
  3  group by commercial_id;

COMMERCIAL_ID
-------------
MIN(DBMS_LOB.SUBSTR(MESSAGE_BODY,3999,1))
--------------------------------------------------------------------------------
            1
Littlefoot


SQL> select commercial_id, min(dbms_lob.substr(message_bodyyyyyy, 3999, 1))
  2  from dwh_f_mp_message_vw
  3  group by commercial_id;
select commercial_id, min(dbms_lob.substr(message_bodyyyyyy, 3999, 1))
                                          *
ERROR at line 1:
ORA-00904: "MESSAGE_BODYYYYYY": invalid identifier


SQL>

我建议你运行这个:

SQL> desc dwh_f_mp_message_vw
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 COMMERCIAL_ID                                      NUMBER
 MESSAGE_BODY                                       CLOB

并将结果发回此处(除非您弄明白;在这种情况下,请解释问题所在)。可能的罪魁祸首是在双引号下创建的列,例如

SQL> drop table dwh_f_mp_message_vw;

Table dropped.

SQL> create table dwh_f_mp_message_vw (commercial_id number, "message_body" clob);

Table created.

SQL> insert into dwh_f_mp_message_vw (commercial_id, message_body) values (1, 'Littlefoot');
insert into dwh_f_mp_message_vw (commercial_id, message_body) values (1, 'Littlefoot')
                                                *
ERROR at line 1:
ORA-00904: "MESSAGE_BODY": invalid identifier


SQL> insert into dwh_f_mp_message_vw (commercial_id, "message_body") values (1, 'Littlefoot');

1 row created.

SQL> desc dwh_f_mp_message_vw
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------------
 COMMERCIAL_ID                                      NUMBER
 message_body                                       CLOB

SQL>

如果是这样,请去掉双引号。

【讨论】:

  • 你是对的......字段存在于原始基表中,但从视图中丢失......谢谢
猜你喜欢
  • 2022-11-22
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多