00904:“columnname”:无效标识符

zour9fqk  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(348)

当我打开sqldeveloper时,存在同名的列。它发生在一些uat和prod db中,但在一些uat数据库中工作。
请帮帮我
也请解释以下例外之间的区别
ora-00904:“columnname”:标识符无效
ora-00904:“表名”。“列名”:无效标识符

klh5stk1

klh5stk11#

注意字母大小写。
默认情况下,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\u name”所示);在oracle中,数据库是不同的。如果你想在oracle和其他dbms之间建立一种关系,那么什么是“数据库”在oracle中有“用户”(或“模式”)。
除此之外,没有区别。 ORA-00904 意味着您引用的列在该表中不存在。再说一遍:注意字母大小写。

相关问题