概述
2019独角兽企业重金招聘Python工程师标准>>>
郁闷: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”,点击确定。在弹出的确认对话框中点击确认
转载于:https://my.oschina.net/softwarechina/blog/124668
最后
以上就是犹豫彩虹为你收集整理的Powerdesigner生成的建表语句在oracle建表后,表不能操作的全部内容,希望文章能够帮你解决Powerdesigner生成的建表语句在oracle建表后,表不能操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复