Oracle "ORA-00942: 表或视图不存在 "的原因和解决方法
采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”。 1、问题产生的原因 Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的时候Oracle会自动将我们的表名,字段名转成大写。 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不会将其转换成大写 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脚本中需要将表名也加上”“。 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语句时,表和字段名上是没有引号了。 在powerdesigner中设计Oracle数据库并generator database成功,用PLSQL Developer可以看到生成的表,但对这些表或者序列进行添加删除修改等操作时却提示“表或视图不存在”,直接编辑也是同样的提示… 产生原因: 解决方法: 1.菜单: Database 2.Edit Current DBMS 3.在弹出的对话框中将 ORA11GR1::ScriptSqlFormatUpperCaSEOnly 设为Yes 4.在弹出的对话框中将 ORA11GR1::ScriptSqlFormatCaseSensitivityUsingQuote 设为No 这样以后再生成数据库就不会出现上述问题了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |