由sqlserver转来的视图是个联合查询。select  字段 from 表1 unionselect ‘名称’from 表2现在到了oracle里,由于 字段 数据量大,采用long型存储,导致视图不能建立。提示是类型不一样。字段的类型是long 名称默认是varchar的吧。怎么把 ‘名称’ 转换成long型,以使视图能建立。

解决方案 »

  1.   

    好像不能转换吧,你不如再建一个包含一个long型字段的表,把“名称”插入到这个表中,用时把第二个子句写成查询该表的语句即可。
      

  2.   

    你试着把long类型放在前面一个select 语句,因为long类型的长度比varchar长,长类型转换成短类型是出问题的
    所以短类型应该放在后一个select语句里
      

  3.   

    试试TO_NUMBERselect 字段 from 表1 
    union 
    select to_number(名称) 字段 from 表2 
    select 字段 from 表1 
    union all
    select to_number(名称) 字段 from 表2 
      

  4.   


    总结 
    long型实在不是一个好用的类型。oracle自己也不推荐使用。long型的内容不适合查询。处理方法:修改了表结构,long型改成了varchar型,超过4000的数据再插入一条记录。Allan_xd 的方法有可行性。2,3楼方法不行。谢谢大家的参与。