用PowerDesigner生成oracle数据库表问题

JAVA_DOC 2008-10-23 02:05:26
在用PowerDesigner生成oracle数据库时怎么会是这个样的呢
create table "Category" (
ID INTEGER not null,
"CateName" VARCHAR2(40),
"CateDesc" CLOB
);

问题:表名"Category" 不应该有引号;
数据类型:integer有错;
这样解决?
...全文
1072 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
llcy168 2008-12-17
  • 打赏
  • 举报
回复
使用PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号。其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有“”,会按照ORACLE默认的设置建表(DBA STUDIO里面),默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1”。如果你把引号去掉,ORACLE自动默认为全部大写,即“COLUMN_1”,所以这段SQL在PL/SQL中执行的时候是没有任何问题的,如果不加引号,在PL/SQL会自动识别为大写。如果加了引号,sql或者hql查询“Column_1='XXX'”时,就会报错:ORA-00904: "COLUMN_1": 无效的标识符,除非写为“‘Column_1’='XXX'”。

这个问题是生成脚本格式的问题,因此,我们可以尝试在DBMS配置文件中修改相应的格式设置来解决这个问题。选择DBMS Properties,选择Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮。
mantisXF 2008-10-23
  • 打赏
  • 举报
回复
是的,可以。[Quote=引用 5 楼 JAVA_DOC 的回复:]
你用的是10g吗?为什么我在我的oracle10g上不行呢?
[/Quote]
sleepzzzzz 2008-10-23
  • 打赏
  • 举报
回复
PowerDesigner生成脚本的时候,在选项里可以设置的,把对表和字段名引号的选项勾去掉.
JAVA_DOC 2008-10-23
  • 打赏
  • 举报
回复
你用的是10g吗?为什么我在我的oracle10g上不行呢?
JAVA_DOC 2008-10-23
  • 打赏
  • 举报
回复
不是大小写问题,是生成的数据表不应该有引号,如:
create table "Category" (
ID INTEGER not null,
"CateName" VARCHAR2(40),
"CateDesc" CLOB
);
查询时要用 select * from "category";
而一般建的表都是select * from category就可以了,还有oracle 里面不支持Integer数据类型。
oracledbalgtu 2008-10-23
  • 打赏
  • 举报
回复
在PowerDesigner设置菜单中设置一下,取消区分大小写。


[Quote=引用楼主 JAVA_DOC 的帖子:]
在用PowerDesigner生成oracle数据库时怎么会是这个样的呢
create table "Category" (
ID INTEGER not null,
"CateName" VARCHAR2(40),
"CateDesc" CLOB
);

问题:表名"Category" 不应该有引号;
数据类型:integer有错;
这样解决?
[/Quote]
mantisXF 2008-10-23
  • 打赏
  • 举报
回复
--就是怕会有缺省关键字问题
SQL> CREATE TABLE "CATEGORY" (
2 ID INTEGER NOT NULL,
3 "CATENAME" VARCHAR2(40),
4 "CATEDESC" CLOB
5 );

Table created

SQL> SELECT * FROM CATEGORY;

ID CATENAME CATEDESC
---------- -------------------- ----------------------

[Quote=引用楼主 JAVA_DOC 的帖子:]
在用PowerDesigner生成oracle数据库时怎么会是这个样的呢
create table "Category" (
ID INTEGER not null,
"CateName" VARCHAR2(40),
"CateDesc" CLOB
);

问题:表名"Category" 不应该有引号;
数据类型:integer有错;
这样解决?
[/Quote]
BlueskyWide 2008-10-23
  • 打赏
  • 举报
回复

create table Category (
ID INTEGER not null,
CateName VARCHAR2(40),
CateDesc CLOB
);



[Quote=引用楼主 JAVA_DOC 的帖子:]
在用PowerDesigner生成oracle数据库时怎么会是这个样的呢
create table "Category" (
ID INTEGER not null,
"CateName" VARCHAR2(40),
"CateDesc" CLOB
);

问题:表名"Category" 不应该有引号;
数据类型:integer有错;
这样解决?
[/Quote]

17,091

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧