SQL>  create table tb ("number" varchar2(10));表已创建。

解决方案 »

  1.   

    像这样是可以创建,但是我不能这样做啊
    这样说吧,其实我是把其它数据库迁移到oracle,原来数据库中有很多表是以number和size命名的,如果我把列名改成“number”或者重新命名的话,前台的应用就会出错。
      

  2.   

    在oracle中是认大小写的NUMBER是oracle的保留字。在oracle中"number"和number是(这样写在oracle中默认为NUMBER)不一样的。
      

  3.   

    因为number是oracle的保留字,所以肯定会出错
      

  4.   

    奇怪的是,我第一次安装完oracle后,把需要迁移的数据库(原来数据库中有很多表的列名就是用number和size命名的)迁移到oracle后,就不会出错啊!
      

  5.   

    再问一下,type算不算oracle的保留字?我要迁移的数据库中还有一些表是以type命名的,如果算的话,为什么这些又不会出错呢?
      

  6.   

    难道真要我去改前端的应用?看来只好不学Oracle了
    本来想借此学学oracle,没想到
      

  7.   

    数据迁移工具在移植到ORACLE的过程中会自动在SQL语句中对字段名称加上"",所以不会出错.任何编程语言都有一定数量的保留字,避免使用保留字作为变量名或者对象名称是编程的基本原则. 难道你可以写这样的语句吗?
    int int;   //int作为变量名?
    float for;   //for作为变量名?
      

  8.   

    多谢楼上的KingSunSha(弱水三千)哥,您上次也帮我解决了一个问题,小弟非常感谢!我的这个问题让您看了一定很生气了,可能是我没有把问题描述清楚吧!其实我并没有说oracle怎么样,或者说别人怎么样(我要迁移的数据库是别人设计的)?,因为别人在设计数据库时不可能想得那么周到,避免数据库中的某一列的列名不要用到所有的数据库管理系统的保留字,大多数人在设计时,想到的是只要不跟当时的数据库管理系统的保留字冲突就可以了。
      另外,我也知道加上“”可以顺利迁移,但是当前台的应用要用到某一张表时,程序报错:说列名无效。所以说加上“”后实际上列名已经变了。我现纳闷的是,我第一次(现在是第二次)迁移时,当时是相当于做实验吧!对原数据库中含有number和size的列不需要加“”就可以迁移,当然前台的应用也不会报错。当时为什么就不会和列名冲突呢?还有,type应该也算是ORACLE的保留字吧!要迁移的数据库中有很多表的列名都是用type命名的,而含有这列的表在迁移时就没有报错。为什么这些又不冲突呢?