我正在尝试运行以下代码,但是我收到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:无效的标识符”
非常感谢您的帮助!
答案 0 :(得分:1)
这意味着别名为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
请注意前三列:对我来说那些看起来可疑:
INSERT INTO DWCUST (DWCUSTID, --> dwcustseq.nextval
DWSOURCEIDBRIS, --> cb.custid
DWSOURCEIDMELB, --> null
一切都匹配,但是那3个不匹配。 cb.custid
是否不应该进入dwcustid
?