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)
);

建表语句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是大小写不敏感的




本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/799105,如需转载请自行联系原作者

相关文章
|
4月前
|
SQL Oracle 关系型数据库
ORA-01658创建表或索引报错分析
某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下: SQL loader ORA-01658 unable to creale INITIAL extent for segment in tablespace ADS5GP2P_1 这个报错的意思是,没有足够的连续空间为表或索引创建 INITIAL extent
103 0
|
Oracle 关系型数据库
【Oracle】建立关联三个表的视图
【Oracle】建立关联三个表的视图
117 0
|
SQL Oracle 关系型数据库
"ORA-00942: 表或视图不存在 "的原因和解决方法
采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享。
2617 0
|
Oracle 关系型数据库 索引
Oracle学习(十):视图,索引,序列号,同义词
本文主要讲Oracle视图,索引,序列号,同义词
200 0
Oracle学习(十):视图,索引,序列号,同义词
|
存储 Oracle 关系型数据库
物化视图快速刷新报 ORA-12008 & ORA-01031
物化视图快速刷新报 ORA-12008 & ORA-01031 用户A创建了物化视图,物化视图里边引用了用户B的表,现在用户C执行exec dbms_mview.
1592 0