繁体   English   中英

java.sql.SQLSyntaxErrorException:ORA-00904:“columnName”:无效标识符

[英]java.sql.SQLSyntaxErrorException: ORA-00904: “columnName”: invalid identifier

当我打开 SQL 开发人员时,相同的列以完全相同的名称存在。 它发生在一些 UAT 和 prod DB 中,但在一些 UAT 数据库中工作。

请帮我

另请解释以下异常之间的区别

  1. ORA-00904: "columnName": 无效的标识符
  2. ORA-00904: "tableName"."columnName": 标识符无效

介意信箱。

默认情况下,Oracle 中所有对象的名称都以大写形式存储,但您可以使用任何大小写来引用它们。 例如:

SQL> create table test (id number);

Table created.

SQL> insert into test (ID) values (1);

1 row created.

SQL> select iD from TeST;

        ID
----------
         1

SQL> select ID from test;

        ID
----------
         1

但是,如果你使用双引号和混合大小写,那么你必须使用双引号和完全相同的字母大小写,总是:

SQL> create table "Test" ("iD" number);

Table created.

SQL> insert into test (id) values (1);
insert into test (id) values (1)
            *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> insert into "Test" (ID) values (1);
insert into "Test" (ID) values (1)
                    *
ERROR at line 1:
ORA-00904: "ID": invalid identifier


SQL> insert into "Test" ("ID") values (1);
insert into "Test" ("ID") values (1)
                    *
ERROR at line 1:
ORA-00904: "ID": invalid identifier


SQL> insert into "Test" ("iD") values (1);

1 row created.

SQL>

从您发布的两个错误开始:它们是相同的。 唯一的区别是第二个显示所有者(模式)名称和列名。 请注意,它不是数据库名称(如“DB_Name”所示); 在 Oracle 中,数据库有所不同。 如果您试图在 Oracle 和其他一些 DBMS 之间建立关系,那么 Oracle 中“用户”(或“模式”)是什么“数据库”。

除此之外,没有区别。 ORA-00904表示您正在引用该表中不存在的列。 再次:介意字母大小写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM