Почему я получаю ошибку "недопустимый идентификатор" при запуске этого кода? - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь запустить следующий код, но получаю ошибку неверного идентификатора для cb.state, я не понимаю, почему?

INSERT INTO DWCUST (DWCUSTID, DWSOURCEIDBRIS, DWSOURCEIDMELB, FIRSTNAME, SURNAME, GENDER, PHONE, POSTCODE, CITY, STATE, CUSTCATNAME)
SELECT dwcustSeq.nextval, cb.custid, cm.custid, cb.fname, cb.sname, cb.gender, 
        cb.phone, cb.postcode, cb.city, cb.state, cc.custcatname
   FROM a2custbris cb
NATURAL JOIN a2custcategory cc
NATURAL JOIN a2custmelb cm
  WHERE cb.rowid NOT IN ( SELECT source_rowid FROM A2ERROREVENT );

Если это вообще поможет, состояние и cb.state - синий текст в Oracle, я не знаю почему.

Ожидаемый результат:

Нет ошибок, строки добавлены в dwcust

Фактический результат:

Ошибка SQL: ORA-00904: "cb.state": неверный идентификатор00904. 00000 - «% s: неверный идентификатор»

Любая помощь очень ценится!

1 Ответ

1 голос
/ 28 октября 2019

Это означает, что таблица с псевдонимом cb (a2custbris) не содержит столбец с именем state.

. Если вы видите его в таблице, обратите внимание на регистр букв,Если он случайно создан так, что имена столбцов заключены в двойные кавычки (вы будете видеть их не в верхнем регистре, что по умолчанию), то вам придется использовать один и тот же регистр букв каждый раз, когда вы ссылаетесь на этот столбецНапример,

select cb."state"
from a2custbris cb

[РЕДАКТИРОВАТЬ: относительно недействительное число ]

Это то, что вы делаете:

INSERT INTO DWCUST (DWCUSTID,         --> dwcustseq.nextval
                    DWSOURCEIDBRIS,   --> cb.custid
                    DWSOURCEIDMELB,   --> null
                    FIRSTNAME,        --> cb.fname
                    SURNAME,          --> cb.sname
                    GENDER,           --> upper(cb.gender)
                    PHONE,            --> cb.phone
                    POSTCODE,         --> cb.postcode
                    CITY,             --> cb.city
                    STATE,            --> cb.state
                    CUSTCATNAME)      --> cc.custcatname

Обратите внимание на первые 3 столбца: те, которые мне кажутся подозрительными:

INSERT INTO DWCUST (DWCUSTID,         --> dwcustseq.nextval
                    DWSOURCEIDBRIS,   --> cb.custid
                    DWSOURCEIDMELB,   --> null

Все совпадает, но эти 3 - нет. Разве cb.custid не должен входить в dwcustid?

...