Why not just use Varchar2(N) type , format your data and store it .Sometime , store numberic and date value in character field is a good idea

解决方案 »

  1.   

    完整性,性能性,关联性,.......等等,都不适易向表作任何修改,因为不知修改以后影响性。
    或者换个角度可以用ORACEL内部对象也可以。create type name_type as object(....);
    至于添加字段如下:alter table table_name add(a varchar(20),...);
      

  2.   

    我在为我的程序写接口的时候遇到了这个问题
    我用了动态sql进行处理
    让用户自己进行表结构设计
    不过那个存储过程写的也挺麻烦的
    而且每该一次都会丢失数据
    除非再为数据进行备份
      

  3.   

    我现在搞的一套系统就允许用户自己在任何表中添加字段,实现的原理是系统自己建立了一套数据字典,比如有以下的几个表:
    CREATE TABLE tab
    (  tabnum   INTEGER NOT NULL,
       tabname  VARCHAR2(18) NOT NULL,
       tabnametextnum INTEGER NOT NULL,
       descr VARCHAR2(50) NOT NULL,
       descrtextnum   INTEGER NOT NULL,
       tabhead  VARCHAR2(18) NOT NULL,
       ...
    );
    CREATE TABLE col
    (  tabnum   INTEGER NOT NULL,
       colnum   INTEGER NOT NULL,
       colname  VARCHAR2(18) NOT NULL,
       colnametextnum INTEGER NOT NULL,
       descr VARCHAR2(50) NOT NULL,
       descrtextnum   INTEGER NOT NULL,
       appldatatype   INTEGER NOT NULL,
       format   VARCHAR2(50) NOT NULL,
       formattextnum  INTEGER NOT NULL,
       ...
    );这里的tab和col表用来控制系统中所用的表和每个表中的列,表结构我简化了,实际上要复杂的多。这样的系统灵活性很好,但是代码量大大增加了。
      

  4.   

    你所实现的是动态库结构,建议你参考以下sqlserver的系统表
    另外若数据量及并发用户很多,做好不要采用这种结构,最好是修改原来的结构及程序,还有这种结构所面临的数据一致型问题非常要命!!!