Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL的问题_Sql_Oracle - Fatal编程技术网

Oracle SQL的问题

Oracle SQL的问题,sql,oracle,Sql,Oracle,有谁能告诉我为什么我会在下面出错: “ORA-00904:“消息正文”:无效标识符” 当我对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; 消息体字段是CLOB 似乎DWH\u F\u MP\u MESSAGE\u VW不包含名为MESSAGE\u

有谁能告诉我为什么我会在下面出错:

“ORA-00904:“消息正文”:无效标识符”

当我对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;
消息体字段是CLOB


似乎
DWH\u F\u MP\u MESSAGE\u VW
不包含名为
MESSAGE\u 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>

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

似乎
DWH\u F\u MP\u MESSAGE\u VW
不包含名为
MESSAGE\u 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>

如果是这样的话,就不要使用双引号。

仔细看一下第一行末尾的孤立引号。这只是我输入so时的一个拼写错误……这不是问题所在。我据此进行了编辑;谢谢你仔细看一下第一行末尾的孤立引号。这只是我进入的时候的一个输入错误,所以…这不是问题所在。我据此进行了编辑;谢谢你是对的…字段出现在原始基表中,但在视图中丢失了…谢谢你是对的…字段出现在原始基表中,但在视图中丢失了…谢谢