【发布时间】:2019-10-28 07:57:11
【问题描述】:
我正在尝试运行以下代码,但我收到 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 );
如果有帮助的话,state 和 cb.state 在 Oracle 中是蓝色文本,我不知道为什么。
预期结果:
没有错误,行添加到 dwcust
实际结果:
SQL 错误: ORA-00904:“cb.state”:标识符无效 00904. 00000 - "%s: 无效标识符"
非常感谢任何帮助!
【问题讨论】:
-
您使用什么工具来运行此语句?像 Oracle SQL Developer 这样的 IDE?
state是 Oracle 中的关键字,SQL Developer 会将其突出显示为关键字(它不是保留字,因此可以将其用作列名)。有趣的是 ORA-00904 消息的"cb.state"小写,如果它是普通语句中的普通列,则消息将是ORA-00904: "CB"."STATE": invalid identifier 00904. 00000 - "%s: invalid identifier"。所以我认为你没有告诉我们一些重要的事情。 -
我发现了这个:stackoverflow.com/questions/20242329/… 如果您尝试应用第二个答案(获得最多票数)...也许会有所帮助...
标签: sql oracle sql-insert