Skip to content

字母大小写

ORA-00904 Invalid Identifier - Oracle Database Object Name Recognition Examples

如何解决ORA-00904 标识符无效

ORA-00904 ORA-00904表示您在语句中使用了不匹配的列名或不正确的语法。通常,错误不仅发生在SELECT或INSERT中,还发生在UPDATE,DELETE,CREATE TABLE,ALTER TABLE和PL/SQL块中。 大多数用户不会相信错误,但事实上SQL解析器从未犯过任何错误。在这篇文章中,您可能会看到一些关于ORA-00904的错误模式,其中一个可能与您的情况相符。由于大多数用户错误是由区分大小写的问题引起的,因此我们必须首先解释松散形式和精确形式之间的差异。 通常,Oracle会将大多数标识符排除在密码之外,并将其视为不区分大小写的标识符。但是在ORA-00904无效标识符的情况下应该注意一些特殊用法。 不仅ORA-00904,ORA-00903和ORA-00911也与对象标识符的无效使用有关。更具体地说,ORA-00903警告用户无效的表名,并引发ORA-00911来定位非法字符 松散形式与精确形式 根据Oracle数据库对象名称和限定符,有两种有效的命名形式来创建数据库对象。一个是非引用标识符,另一个是带引号的标识符。为了避免ORA-00904,您必须知道两种命名形式之间的明显差异。 非引用标识符(松散形式) 它们没有标点符号或任何其他特殊处理。只要它们基本上是等效的字符串,我们就可以在SQL语句中不区分大小地灵活使用它们。所以我通常在这篇文章中将其称为松散形式。实际上,非引用标识符都被认为是上层标识符。这个概念将帮助您更好地了解ORA-00904。 带引号的标识符(精确形式) 它们以双引号("")开头和结尾。您可以将几乎所有字符放在双引号中,包括空格和保留字。这种标识符应该与最初定义的完全一致。所以我通常在这篇文章中将其称为精确形式。据我所知,这是ORA-00904的主要来源。 稍后,我们还将讨论有关ORA-00904的更多问题,以区分引用的和未引用的标识符。 ORA-00904的错误模式 在大多数情况下,滥用列名是ORA-00904的主要来源,其余的是语法错误。在这篇文章中,我们将在以下部分讨论ORA-00904的几种错误模式。 SELECT或INSERT中的ORA-00904 WHERE,ORDER BY或GROUP BY中的ORA-00904 CREATE TABLE中的ORA-00904 ALTER TABLE中的ORA-00904 PL/SQL中的ORA-00904… Read More »如何解决ORA-00904 标识符无效