Ora-00942:表或视图不存在
今天为工程建库,弄来弄去总是报这个错误。
最后才明白:Oracle表名一定要全部用大写,用小写的话,PL/SQL可能不认。
你说这事郁闷不。
其实最郁闷的在于,这个问题不是因Oracle而起,是PowerDesigner的问题。
问题描述
在使用PowerDesigner画数据库的图时,如果表名和列名全部使用大写,那么PowerDesigner自动生成的建表语句中就不会使用双 引号将表明、列名引起来;但如果名称中包含小写,那么表名或列名中就会包含""。像下面这两个例子:
建表语句A:
create table "t_se_Insurance_Info" (
VIN VARCHAR2(30),
VMT VARCHAR2(20),
"Drive_Area" VARCHAR2(10),
"Is_Ecdemix" VARCHAR2(1),
);
建表语句B:
create table T_SE_CITY (
"City_ID" NUMBER not null,
"City" VARCHAR2(20),
ID NUMBER not null,
constraint PK_T_SE_CITY primary key (ID)
);
建表完成后,在PL/SQL中使用语句 “select * from t_se_Insurance_Info”就会出现“表或视图不存在”的错误,正确的语句应该是“select * from "t_se_Insurance_Info"”。
问题分析
建表语句A中,表名实际上是t_se_Insurance_Info,但PowerDesigner自动生成的语句中建立的表 是"t_se_Insurance_Info"。相比表名全大写的建表语句B,这里就多了一对""。由于这对双引号的存在,在PL/SQL中使用语句 “select * from t_se_Insurance_Info”就会出现“表或视图不存在”的错误,正确的语句应该是“select * from "t_se_Insurance_Info"”。
字段名与之类似,在PL/SQL中企图检索某字段时,如果字段名全部是大写字母,直接敲字段名即可;如果是大小写混杂,那么需要用""将字段名包起 来。
这实际是PowerDesigner的问题。如果我们在将PowerDesigner生成的建表语句执行之前对它进行编辑,去掉其中多余的"",那 么一切都将恢复正常。因为Oracle是大小写不敏感的