Проблема с Oracle SQL - PullRequest
       1

Проблема с Oracle SQL

0 голосов
/ 07 февраля 2019

Может кто-нибудь сказать мне, почему я получаю ошибку ниже:

"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

1 Ответ

0 голосов
/ 07 февраля 2019

Кажется, что 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>

Если это так, избавьтесь от двойных кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...