oracle9i创建dblink_r1链接到11g,往11g表中插入时报
ora-00904:sys_guid标识符无效
 ora-02063:紧接着line(源于dblink_r1)insert into temp_a@dblink_r1 (id,name)
select sys_guid(),name from temp_b;10g到11g没有这问题,难道是数据库版本导致?困扰了好几天了,请大神们帮忙看看,谢谢!

解决方案 »

  1.   

    直接执行select  sys_guid()  from dual;能执行么? 可能是权限问题?
      

  2.   

    直接执行可以,插入其他字段也可以,就是sys_guid()不行。
      

  3.   

    不用DBLINK直接在11G上插入试试9i到11g你还得看一下字段的类型,特别是长度定义
      

  4.   

    直接插入没问题,11g也认sys_guid(),就是dblink方式不行。汗了。
      

  5.   

    字段类型看一下,前不久刚处理过一个mssql 2000至oracle 11的事情,发现也有类型问题字段类型,类型长度   看是不是11g与9i有差别
      

  6.   

    sys_guid() 长度32,字符串类型,11g中表字段id为varchar2(100),看了下没问题啊。。
      

  7.   

    多谢楼上各位,引系统升级涉及数据移植,不在一个数据库,必须用到dblink。而且插入的表需要sys_guid.
      

  8.   

    insert into temp_a@dblink_r1 (id,name)
    select a.id,a.name from
    (select sys_guid() as id,name from temp_b) a;
    做成子查询试试?
      

  9.   

    子查询也不好使,临时表试过可以,但是我要移植很多包含sys_guid()的表,用临时表太麻烦。
      

  10.   

    有办法的,我们项目组很早遇到这个问题。
    通过把dblink的语句创建成视图就可以了。