ORA-00942:表或视图不存在-Oracle
我正在使用Oracle11g 我在使用查询时遇到此错误:ORA-00942:表或视图不存在-Oracle,oracle,Oracle,我正在使用Oracle11g 我在使用查询时遇到此错误: select count(*) from potluck; 因此,当我使用: select count(*) from "potluck"; 每个人都很好。。。 请告诉我为什么? 谢谢在Oracle中的标识符周围加双引号会导致Oracle将标识符视为区分大小写,而不是使用默认的不区分大小写。如果创建名称周围带有双引号的表(或列),则必须始终使用双引号并通过正确指定大小写来引用标识符(所有大写标识符除外,其中双引号没有意义) 在幕后,O
select count(*) from potluck;
因此,当我使用:
select count(*) from "potluck";
每个人都很好。。。
请告诉我为什么?
谢谢在Oracle中的标识符周围加双引号会导致Oracle将标识符视为区分大小写,而不是使用默认的不区分大小写。如果创建名称周围带有双引号的表(或列),则必须始终使用双引号并通过正确指定大小写来引用标识符(所有大写标识符除外,其中双引号没有意义) 在幕后,Oracle总是进行区分大小写的标识符匹配。但在进行匹配之前,它总是将不带双引号的标识符强制转换为大写。如果在标识符周围加双引号,Oracle将跳过大写转换 所以如果你做类似的事情
CREATE TABLE my_table(
col1 number,
col2 number
)
SELECT * FROM "my_table"
CREATE TABLE "my_other_table"(
col1 number,
col2 number
)
你可以
SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"
但有点像
CREATE TABLE my_table(
col1 number,
col2 number
)
SELECT * FROM "my_table"
CREATE TABLE "my_other_table"(
col1 number,
col2 number
)
将失败
另一方面,如果你做了
CREATE TABLE my_table(
col1 number,
col2 number
)
SELECT * FROM "my_table"
CREATE TABLE "my_other_table"(
col1 number,
col2 number
)
你不能这样做
SELECT * FROM my_other_table
SELECT * FROM MY_OTHER_TABLE
SELECT * FROM My_Other_Table
SELECT * FROM "MY_OTHER_TABLE"
但是这个
SELECT * FROM "my_other_table"
将起作用有人创建了带有引号的表,因此名称区分大小写-
创建表“potluck”…
。当一个表有这样一个名称时,引用它的唯一方法是使用与第二个示例中相同的大小写,使用带引号的名称。如果可能的话,将表重命名为一个非引用的名称,并且在将该表重命名为非引号之后,也改变所有引用该表的程序。个人认为引用的表(和其他数据库对象)名称是一个错误,甚至许多工具引用这些名称。YMMV。