"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语句时,表和字段名上是没有引号了。

时间: 2024-11-10 11:14:08

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

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

采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享. 1.问题产生的原因 Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的时候Oracle会自动将我们的表名,字段名转成大写, eg: create table T_WindRadar ( wr_id VARCHA

关于防止表单表达重复提交的几个解决方法

表达重复提交的问题,是B/S系统开发中经常容易被忽视,但常常又令程序员头疼的一个问题.根据墨菲定律,如果你不做防止重复提交的机制,那些用户行为往往就会给你带来麻烦,然后就等着产品经理的抱怨吧.下面,我就总结了几条常见的关于B/S系统中防止表单重复提交的几个办法: 1.页面上控制.怕用户点击提交按钮2次?用javascript控制下吧:怕用户后退导致重复提交?那就干脆打开个新页面吧.总之你要设想到用户在页面上的所有可能的操作,把这些容易导致BUG的操作消灭的萌芽中. 2.session控制.如果实

mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法

补充:正常情况下,建议数据库备份最好用工具进行备份,通过拷贝数据库表进行数据迁移,不同的环境会出现各种不同的意外问题. 背景:今天在整理一个网站的时候,操作系统由于系统自动更新导致一直出现系统蓝屏死机,唉,悲剧了,于是重新安装了系统 windows server 2008 enterprise 32bit. 详情: 系统安装完成后,重新配置之前那个网站,appache服务配好之后,再配置数据的时候是这样做的,将原来Mysql 文件夹(C:\Windows.old\ProgramData\MySQ

Spring MVC 3 表单中文提交后乱码问题的解决方法

在spring mvc 3.0 框架中,通过JSP页面.HTML页面以POST方式提交表单时,表单的参数传递到对应的servlet后会出现中文显示乱码的问题.解决办法可采用spring自带的过滤技术,对所有页面间参数的传递设置统一的字符编码. 分两步解决问题: 1.设置页面格式为UTF-8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 2.在web.xml中添加

oracle ORA-01653 表空间不能自动增长的原因及处理方法

背景:表空间已经设置自动增长,但达到一定大小后仍会报ORA-01653. 解决过程: 查阅相关资料,多数只给出了解决办法,但这个解决办法经过验证也是临时了,到了一定大小仍旧会报错,到时只能再次采取同样办法进行操作. 通过几台机器的观察发现,报出该错误时,数据表文件的大小是一致的32G.因此判断,某种原因导致了该限制.于是进行相关搜索,最终找到了答案,但是,对于这一问题描述,有2个说法:1.windows系统下,单文件有32G的限制,但该说法我没有查到有力的支持证据,即便有其他人提到该说法,但并没

旗正规则引擎内存表出错的原因及解决方法分享

1        内存表 1.1     汇总 1.1.1       错误 汇总列中必须包含分组列所属部门 1.1.2       解决方案 点击图片中的"sum(基本工资)",弹出窗体,将所属部门加入.引发该问题的原因是,分组列存在的字段,必须要包含在汇总列中. 1.2     更新 1.2.1       错误 数组个数小于取值位置:-1 1.2.2       解决方案 出现该错误的原因是内存表中没有数据.可能性有两个,一.内存表真没有数据,二.更行的时候字段的英文名称没有对应

oracle 11g exp默认空表不导出 原因及解决方法

在oracle11g中,每张表在起初创建时,默认是不分配区段给此对象. 当首次插入数据时,会分配对应的区段. 对应控制参数为 deferred_segment_creation=true 如果要保持跟低版本保持一致的属性,可以设定此参数值为flase alter system set deferred_segment_creation=false scope=both; 在后续创建的新表中,会默认分配区段. 如果参数值设定为true,即使在创建表时指定具体的存储参数来获取初始区段大小,也不会分配

使用旗正规则引擎内存表出错的原因及解决方法

1        内存表 1.1     汇总 1.1.1       错误 汇总列中必须包含分组列所属部门 1.1.2       解决方案 点击图片中的“sum(基本工资)”,弹出窗体,将所属部门加入.引发该问题的原因是,分组列存在的字段,必须要包含在汇总列中. 1.2     更新 1.2.1       错误 数组个数小于取值位置:-1 1.2.2       解决方案 出现该错误的原因是内存表中没有数据.可能性有两个,一.内存表真没有数据,二.更行的时候字段的英文名称没有对应,导致没有

Win7x64中使用PowerDesigner连接Oralce数据库报“[Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标识符”错误解决方法

错误描述 操作系统是Win7 x64,Oracle服务端是Oracle11g x64,客户端是Oracle10gR2 x86. 使用PL-SQL Developer连接正常 使用系统ODBC连接正常.这里要注意的是,64位系统默认启动的是64位ODBC数据源管理器,默认指向的是服务端连接,所以需要为Oracle服务端也配置TNS Service Name,否则同样会连接报错.PowerDesigner默认启动的是32位的ODBC数据源管理器,程序路径为“%SystemRoot%\SysWOW64