我现在很忙,不能亲自试验,但能给你点提示:  type BOOLEAN is (FALSE, TRUE);  type DATE is DATE_BASE;  type NUMBER is NUMBER_BASE;
  subtype FLOAT is NUMBER; -- NUMBER(126)
  subtype REAL is FLOAT; -- FLOAT(63)
  subtype "DOUBLE PRECISION" is FLOAT;-- other number subtypes
  subtype INTEGER is NUMBER(38,0);
  subtype INT is INTEGER;
  subtype SMALLINT is NUMBER(38,0);
  subtype DECIMAL is NUMBER(38,0);
  subtype NUMERIC is DECIMAL;
  subtype DEC is DECIMAL;
  subtype BINARY_INTEGER is INTEGER range '-2147483647'..2147483647;
--                used to be -2147483648 - less than MAXSB4MINVAL
  subtype NATURAL is BINARY_INTEGER range 0..2147483647;
  subtype NATURALN is NATURAL not null;
  subtype POSITIVE is BINARY_INTEGER range 1..2147483647;
  subtype POSITIVEN is POSITIVE not null;
  subtype SIGNTYPE is BINARY_INTEGER range '-1'..1;  -- for SIGN functions
你看明白后也许能试验出来。

解决方案 »

  1.   

    补充一下,用过“MS SQL Server”的朋友,请回想一下它的自定义数据类型,在企业管理器中定义好之后,就可以像原生类型一样到处使用,非常方便。:-)
      

  2.   


      谢谢 chenbf_sz(大象) !
      我以前尝试过SUBTYPE,在一个存储过程中定义子类型我是用过的,但现在需要让我定义的数据类型“加入”到Oracle中,能和其原生数据类型“平起平坐”,至少在建表时可以用。
      请各位费心,提供个好办法!  (最好能按楼顶问题的123分别答复,这样更清楚明了,谢谢各位!)
      

  3.   

    我给你的就是 ORACLE 系统的标准数据包 standard 中的一部分,你将你定义的数据写到该包中,以 SYSTEM (SYS)模式运行后看看能不能用。
    我想应该是可以的。
      

  4.   

    to 大象:
      谢谢!是不是Oracle已经内置了PLS_INTEGER和BINARY_INTEGER类型?如何
    在建表时使用?
      

  5.   

    大象先生:
      快帮忙想想办法啊,究竟怎么能用啊?
      顺便说一下,32位的整型是编程时非常常用的数据类型,为什么Oracle偏偏不提供呢?很费解……
      

  6.   

    这样不行的话有个简单办法,示例如下:
    CREATE TABLE test(
      t_no INTEGER,
      CONSTRAINT test_ck CHECK (t_no BETWEEN (-4294967295) AND 4294967296));
      

  7.   


      谢谢!这样做肯定是可以了。  我还是把问题描述得更清楚一些吧。  我在做一个小程序,带十几个表。用户已经在跑一套基于Oracle的软件了,我要把我的东西插进去,是发电厂,服务器管理很严格,因此不能让我随便改配置随便建东西。我希望能在 sql plus 中和命令行提示符下噼里啪啦敲一阵子就完成,比如这样:1、创建自定义数据类型
      CREATE DATA_TYPE INT32 is NUMBER(10) CHECK (-2e31 AND 2e31-1)2、创建我的表空间
      CREATE TABLESPACE ......3、创建我的表
      CREATE TABLE TEST(ID INT32 PRIMARY KEY, DATA VARCHAR2(100))4、安装我做的程序
      copy a:\*.* c:\mis5、完成呵呵,想得挺美,是吧?不知道能不能实现 :-)
      
    另外,我还是希望Oracle能有个以字节为基数的数据类型,如
      byte: 0~255
        word: 0~65535
        smallint: -32768~32767
        dword: 0~2e32-1
        integer: -2e31~2e31-1
    等等。恐怕大多数搞编程的人都会希望一个数据库系统能有这样的数据类型,毕竟现在的计算机还是二进制的计算机,编程语言内置的数据类型也是以字节为基数的数据类型。Oracle为什么偏偏不提供呢?