【问题标题】:invalid identifier in WHERE clauseWHERE 子句中的标识符无效
【发布时间】:2014-12-13 15:05:50
【问题描述】:

我正在尝试编写 SQL 以将行从一个表复制到另一个表,但在 WHERE 子句中不断收到无效标识符。我正在使用 oracle apex。

这是我的代码:

INSERT INTO CRIMECLOSED (crimeClosedID, crimeName, crimeDate, crimeNotes, 
   outsideSourceDescription, dateClosed, relatedCrimes, 
   staffID, crimeTypeID, locationID)  
SELECT CRIMEOPEN.crimeOpenID, CRIMEOPEN.crimeName, CRIMEOPEN.crimeDate, 
       CRIMEOPEN.crimeNotes,  CRIMEOPEN.outsideSourceDescription, CURDATE(), 
       CRIMEOPEN.relatedCrimes, CRIMEOPEN.staffID, CRIMEOPEN.crimeTypeID, 
       CRIMEOPEN.locationID
FROM CRIMEOPEN
WHERE CRIMEOPEN.crimeOpenID = '1';

CRIMEOPEN 表

CREATE TABLE  "CRIMEOPEN" 
(   "crimeOpenID" VARCHAR2(5), 
"crimeName" VARCHAR2(20), 
"crimeDate" DATE, 
"crimeNotes" VARCHAR2(200), 
"outsideSourceDescription" VARCHAR2(200), 
"relatedCrimes" VARCHAR2(5), 
"staffID" VARCHAR2(5), 
"crimeTypeID" VARCHAR2(5), 
"locationID" VARCHAR2(5), 
 CONSTRAINT "CRIMEOPEN_PK" PRIMARY KEY ("crimeOpenID") ENABLE
 )

我得到的错误是:

ORA-00904: "CRIMEOPEN"."CRIMEOPENID": 标识符无效

我认为错误是试图说“crimeOpenID”不是“CRIMEOPEN”中的列,但它确实是。 请问有什么帮助吗?

【问题讨论】:

  • 包括 CRIMEOPEN 的表格设计
  • 你真的在使用 MySQL 和 Oracle Apex 吗?
  • 为什么你需要别名在这里你可以删除那些
  • 添加表定义
  • 如果没有大小写的对象名称,您的生活会轻松很多...

标签: sql oracle


【解决方案1】:

如果在声明表的列时使用双引号,那么在各种语句中“使用”列时也需要使用相同的格式。

因此,为了解决此问题,您应该在 select 语句中将所有列用双引号括起来(如下所示 - 仅适用于 select 语句)。

INSERT INTO CRIMECLOSED (crimeClosedID, crimeName, crimeDate, crimeNotes, 
   outsideSourceDescription, dateClosed, relatedCrimes, 
   staffID, crimeTypeID, locationID)  
SELECT "CRIMEOPEN"."crimeOpenID", "CRIMEOPEN"."crimeName", "CRIMEOPEN"."crimeDate", 
       "CRIMEOPEN"."crimeNotes",  "CRIMEOPEN"."outsideSourceDescription", CURDATE(), 
       "CRIMEOPEN"."relatedCrimes", "CRIMEOPEN"."staffID", "CRIMEOPEN"."crimeTypeID", 
       "CRIMEOPEN"."locationID"
FROM "CRIMEOPEN"
WHERE "CRIMEOPEN"."crimeOpenID" = '1';

【讨论】:

  • 这修复了上面的错误,但现在我得到了错误:ORA-00904: "LOCATIONID": invalid identifier
  • @user1056798,那么您可能应该对插入语句中的列执行相同的操作 - 如果这些列以相同的方式声明,使用双引号,则在使用它们时将它们用双引号括起来。
猜你喜欢
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多