sql - 为什么我在运行此代码时收到“无效标识符”oracle 错误?
问题描述
我正在尝试运行以下代码,但我收到 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:无效标识符”
任何帮助深表感谢!
解决方案
这意味着别名为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
一切都匹配,但那三个不匹配。不应该cb.custid
进去dwcustid
吗?
推荐阅读
- maven - sh.tak.appbundler:appbundle-maven-plugin:1.2.0 的 maven API 不兼容错误
- firebase-realtime-database - 在 Firebase 规则中使用变量名
- c++ - 使用指针输入元素后,如何打印数组的第一个和最后一个元素、第二个和倒数第二个等的总和?
- next.js - getServerSideProps 在生产中不渲染动态页面,并显示 404 错误
- java - 将数组作为用户的输入,将累加和作为新数组输出
- c# - 在 VB.NET Winforms 表单中使用 C# WPF 用户控件
- c - 关于读/写的 C/C++ 编程
- java - Intellij 插件制作包和主类
- python - 在高维矩阵中采样并连接第 n 行和 n+1 行及后续行
- firebase - flutter and firestore : 动态改变价格和大小