Oracle需要撇号

时间:2012-12-05 11:45:04

标签: oracle plsql

我正在使用Oracle 11g和Oracle SQL Developer 3.2.20.09。我正在创建一个程序。

为什么在编写这样的查询时出现错误PL/SQL: ORA-00942: table or view does not exist

select * from TableExample;

但是,如果我写这样的查询:

select * from "TableExample";

它运作正常吗?

有没有办法使用第一个选项而没有错误?请注意,table是使用执行上述查询的同一用户创建的。

编辑:我也注意到我必须为每个字段使用撇号,除了主键ID

3 个答案:

答案 0 :(得分:2)

原因是该表是使用双引号中的表名创建的。通常,表和列名称不区分大小写,但如果你在它们周围加上双引号,它们就会区分大小写,除非它们完全是大写的(疯狂,但是真的:-()。

要查找正确的表名和列名,可以查询数据字典:

select * from dba_tab_cols where upper(table_name) = upper('TableExample')

(如果您没有必要的权限,请使用user_tab_cols而不是dba_tab_cols)。 对于此查询返回的每个表名和列名,如果它包含除大写字符或下划线之外的任何内容,则必须引用它。

答案 1 :(得分:1)

因为'table'是一个保留字所以oracle会将其视为语法错误,例如:

select * from from ; 

您可以使用双引号将其转义,但每次查询此表时都必须记住使用它们。

答案 2 :(得分:1)

这取决于您创建表格的方式。如果表也被创建为“TableExample”(带引号),则表名称区分大小写,您在选择表时需要使用引号。