"ORA-00942: 表或视图不存在 "的原因和解决方法

简介: 采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享。

采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享。

1、问题产生的原因

  Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的时候Oracle会自动将我们的表名,字段名转成大写,

  eg:

create table T_WindRadar  (
   wr_id                VARCHAR2(64)                    not null,
   wr_reciveTime        DATE,
   wr_image             BLOB,
   constraint PK_T_WINDRADAR primary key (wr_id)
);

 

但是 Oracle 同样支持"" 语法,将表名或字段名加上""后,Oracle不会将其转换成大写
eg:

create table "T_WindRadar"  (
   "wr_id"                VARCHAR2(64)                    not null,
   "wr_reciveTime"        DATE,
   "wr_image "            BLOB,
   constraint PK_T_WINDRADAR primary key (wr_id)
);

如果加上了"",那么我们采用一般的SQL语句查询则会产生“ORA-00942: 表或视图不存在 ”,因此SQL脚本中需要将表名也加上""。
eg:

select * from  "T_WindRadar";

 

这种情况在我们手写SQL的时候一般不会发生,但是我们使用powerdesigner设计数据库的时候,由于不注意会经常出现此类问题,因为Powerdesigner生成的SQL文件默认是加""的。

2、解决的办法

  因为我们使用的是Powerdesigner,所以可以不用手工改写SQL脚本,只要设置Powerdesigner重新生成即可。

  在PowerDesiger中,在physical data model 中找到菜单中的Database下的Edit current DBMS中,

  选择Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,

  表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮。

    这样再生成sql语句时,表和字段名上是没有引号了。
相关文章
|
5月前
|
SQL Oracle 关系型数据库
ORA-01658创建表或索引报错分析
某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下: SQL loader ORA-01658 unable to creale INITIAL extent for segment in tablespace ADS5GP2P_1 这个报错的意思是,没有足够的连续空间为表或索引创建 INITIAL extent
125 0
|
SQL Oracle 关系型数据库
Oracle 删除大量表记录操作总结
Oracle 删除大量表记录操作总结
295 0
|
监控 Oracle 关系型数据库
论ORACLE中如何恢复被delete的表中数据
啊!假如说我有一张表叫t1,今天一不小心把执行了如下命令: delete from t1全部删除了。 也许到这里你还并不害怕,不行就flashback就是了。抱歉,我今天又做了一个purge recyclebin 擦,完蛋了。
818 0