您的位置:首页 > 数据库

PowerDesigner生成SQL脚本时表名、字段名带引号问题及解决方法

2014-12-25 21:44 806 查看
使用PowerDesigner生成数据库脚本时,表名一般会带引号。如下:




加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有“”,会按照ORACLE默认的设置建表,默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1”,如果你把引号去掉,ORACLE自动默认为全部大写,即“COLUMN_1”,所以不必担心,这段SQL在PL/SQL中执行的时候是没有任何问题的,如果不加引号,在PL/SQL会自动识别为大写。
这个问题是生成脚本格式的问题,我们可以尝试在DBMS配置文件中修改相应的格式设置来解决这个问题。在PowerDesigner中,选择Database->Edit current database,选择Script-->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为 “Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“Yes”,如下所示:




将“Yes”修改为“No”,点击【确定】按钮。在弹出的确认对话框中点击【确认】。
    这样设置之后,生成SQL就不会带引号了。如下所示:




    另:如果建表脚本中使用引号。增删改查时,表名、字段名也要加引号。另外,无法使用desc命令来查看表的结构。举例如下:

l 建表(SQL中的表名、字段名带引号):
create table "xxxx"  (
   "alarm_def_id"       NUMBER(12)                      not null,
   "alarm_type_id"      CHAR(1)                         not null
      constraint CKC_xxx check ("alarm_type_id" in ('D','K')),
   "kpi_id"             varchar2(60)                    not null,
   "gen_type"           char(1)                         not null
      constraint CKC_yyy check ("gen_type" in ('0','1','2')),
   "kpi_type"           char(2),
   "comments"           varchar2(256),
   constraint PK_zzz primary key ("alarm_def_id")
);

l 查询表结构:
SQL> desc xxxx;
Object xxxx does not exist.

SQL> desc "xxxx";
Object "xxxx" does not exist.

注:这说明无法用desc命令来查看表的结构。

l 查询表数据:
SQL> select * from xxxx;

select * from xxxx

ORA-00942: 表或视图不存在

SQL> select * from "xxxx";

 alarm_def_id alarm_type_id kpi_id                                                       gen_type kpi_type comments
------------- ------------- ------------------------------------------------------------ -------- -------- --------------------------------------------------------------------------------

l 插入表数据:
SQL> insert into "xxxx" values (1,'D','xx',1,2,'xx');

1 row inserted

SQL> commit;

Commit complete

SQL> insert into xxxx values (1,'D','xx',1,2,'xx');

insert into xxxx values (1,'D','xx',1,2,'xx')

ORA-00942: 表或视图不存在

l 更新表数据:
SQL> update xxxx set "comments"='yyyyy';

update xxxx set "comments"='yyyyy'

ORA-00942: 表或视图不存在

SQL> update "xxxx" set "comments"='yyyyy';

1 row updated

SQL> commit;

Commit complete

l 删除表数据:
delete from xxxx

ORA-00942: 表或视图不存在

SQL> delete  from "xxxx";

1 row deleted

SQL> delete from xxxx;

    注:综上可知,如果SQL脚本中使用引号,增删改查时,表名、字段名也要加引号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐