Powerdesigner生成的建表语句在oracle建表后,表不能操作

    郁闷:powerdesigner 生成oracle的建表脚本,但是对生成的表不能进行 insert、exp、update、drop 报ORA-00942: 表或试图不存在 异常,本以为动了oracle哪里的配置导致的,在网上找了很多帖子——未果!百般无奈下删除了用户 ……drop user lizhiyu cascade;

    不妥:用powerdesigner 生成的oracle的建表脚本重新建库,结果还是一样。只能仔细看下表结构,建表语句如下:

        -- Create table
create table s
(
  "sid"      NUMBER not null,
  "sname"    VARCHAR2(20),
  SEX      VARCHAR2(2),
  "birthday" DATE
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );

 

熟悉点数据库的同志们就会发现问题,打开powerdesigner生成的脚本内容如下:

create table "s"  (
   "sid"                NUMBER                          not null,
   "sname"              VARCHAR2(20),
   "sex"                VARCHAR2(2),
   "birthday"           DATE,
   constraint PK_S primary key ("sid")
);

所有的表名和列明如果是小写字母的加上了双引号

 虽然数据库的表名和字段名不区分大小写但是有双引号和没有双引号就是两回事儿了。双引号怎么来的?powerdesigner里设计字段名时候以小写字母命名 导出sql脚本是会在小写字母上加双引号!!!导致oracle建表成功但是操作不了!


解决办法:

    琢磨:既然能建立就一定能操作啊,索性,试了下 drop table “S” ,恩 果然好使,去掉ddl语句中的所有双引号,问题解决。


 用PowerDesigner生成的sql脚本,在PL/SQL中查询时,总是提示“表或视图不存在”PowerDesigner脚本生成带引号问题 

    用PL/SQL自带的SQL查询是却存在,问题检查下来是因为脚本生成的时候,表明和列是带双引号的。 

    使用PowerDesigner脚本生成数据库时,表名一般会带引号。其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有 “”,会按照ORACLE默认的设置建表(DBASTUDIO里面),默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1”,如果你把引号去掉,ORACLE自动默认为全部大写,即“COLUMN_1”,所以不必担心,这段SQL在PL/SQL中执行的时候是没有任何问题的,如果不加引号,在PL/SQL会自动识别为大写。 
    
  在powerdesigner 12.5或15中,选择Database->Edit   current   DBMS...,选择Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为 “Determines   if   the   case   sensitivity   for   identifiers   is   managed   using   double   quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,如下图手指向的位置改为“No”,点击确定。在弹出的确认对话框中点击确认

你可能感兴趣的:(Powerdesigner生成的建表语句在oracle建表后,表不能操作)