各位老大:
  小弟近日遇到一个棘手的问题,向各位请教.
问题描述:(1)有a表和b表,a表用于存放查询用的where条件字段.
         (2)a表有一个触发器,用于根据a表中的数据拼写一条sql语句,查询另一个表c,并将结果插入到b表.
        (3)注意,b表中有一个字段,类型为blob,而c表中对应有一个字段,类型为long raw,
        (4)特别注意,long raw 字段禁止执行insert into b select * from c此类语句.
    小弟现在需要用a表中的触发器触发一个存储过程,这个存储过程用于获取c表中的long raw 字段数据,并将其写入到b表中的blob字段中,请问此存储过程应该怎么写?急啊!在线等,这里先谢过各位了.

解决方案 »

  1.   

    1、触发器中调用过程,直接引用过程名就行
    2、也可以不用过程,insert into b (select col1,col2,to_lob(long类型字段) from c)
      

  2.   

    抱歉,小弟总是粗心大意,上边的问题还落下了一个限制条件,那就是a表与b表在一个服务器,c表在另外一个服务器上,这两个服务器之间的连接通过链路实现,所以现在的问题就集中在如何在链路中实现
    insert into b select to_lob(photo) from user.c@myLink where id=34;
    但是这样总是报错,提示非法的长数据类使用,请问该如何解决这个问题?谢谢了。
      

  3.   

    你可能需要一个BLOB类型的变量做一个中转,不论你从哪个表中读取数据,你
    SELECT blob字段 INTO BLOB变量 FROM TABLE WHERE 条件UPDATE TABLE1 SET BLOB字段=BLOB变量 WHERE 条件
      

  4.   

    我已经做过测试,从long raw字段的表中可以使用
    select to_lob(photo) from table语句获取图片数据并转换成blob类型,但现在的问题在于源表与目标表在不同的服务器上,需要通过链路进行访问,而在链路中转换long raw到blob时就会出错,报错非法使用长数据类型,请问如何处理?
      

  5.   

    字段设为BLOB  ,代码搜一下就有了。