想要通过datalink更新表数据中blob字段,可否实现

解决方案 »

  1.   

    1.使用 create global temporary table temp在本地创建一个和远程数据库表结构一样的表。2.使用insert into temp select * from tb@dblink,将远程表的数据导入到本地临时表.3.操作本地临时表来取得数据.
      

  2.   

    感谢你的回帖,我把握要实现的目的简要说明一下,有两个用户a,b,
    现在要通过a用户,操作b用户表中的blob字段,不能通过b.table方式实现,要用table@b怎么实现?
      

  3.   

    同一数据库里?这个不叫database link。
    贴出你具体怎么访问的,还有错误信息。a是否有操作b这张表的权限?
      

  4.   

    datalink 不让对 blob 字段的读和写,我这样做还有一个目的,就是备份数据库的时候,减少导出文件的大小
      

  5.   

    selectblob photo into :lb_photo from t_zgxx_photo@dblink where zgdm = :as_zgdm;
    无法返回数据
      

  6.   

    insert into t_zgxx_photo@dblink
    (zgdm, sfsz)
    values('aaaaa','aaa');
    成功
      

  7.   

    可以更新和插入远程数据库中的blob和clob值,
    但是不能查询,lobs字段不支持分布式事务
    使用物化视图和临时表是两种解决方案
    参考
    AskTom给出了极好的解决方案:使用全局临时表。SQL> create global temporary table foo
      2  (
      3    X BLOB
      4  )
      5  on commit delete rows;Table createdSQL> insert into foo select blobcolumn from remoteTable@dl_remote where rownum = 1;1 row insertedSQL> 插入本地临时表之后,在本地的操作就没有任何问题了。
      

  8.   

    global temporary 不是也占用 表空间吗?我的目的是就是备份数据库的时候,减少导出文件的大小
      

  9.   

    t_zgxx_photo 表的数据内容很大,有时可以占用了数据备份文件的80%,对程序的调试没有用处,所以将他与其他表分开
      

  10.   

    直接给用户a开访问b的这张表的权限,b.tablename就可以访问了