表a 有 字段aid(主键 number)、aname(clob类型)、
表b 游资段 bid(主键 number) 、aid (a表的主键 number)、bname(varchar(50))
现在我想修改a表中所有的aname字段    
修改表a的aname =  把查询出来多条b表中的bname字段值按“,”符号拼接在一起作为value值 
条件:表a中的aid等于表b中的aid 求大侠帮忙!Oracle根据一个表修改另一个表字段批量修改

解决方案 »

  1.   

    update a
       set a.aname =
           (select wm_concat(b.bname) from b where b.aid = a.aid group by b.aid)
     where exists (select 1 from b where b.aid = a.aid);
      

  2.   

     ORA-22813: 操作数值超出系统的限制我的colb的大小为4000
    这是因为字段大小太大了吗?
      

  3.   

     ORA-22813: 操作数值超出系统的限制我的colb的大小为4000
    这是因为字段大小太大了吗?
    是的,如果是这样的话,只能自定义oracle聚集函数,类似于功能wm_concathttp://blog.csdn.net/cnham/article/details/6206759
      

  4.   

     ORA-22813: 操作数值超出系统的限制我的colb的大小为4000
    这是因为字段大小太大了吗?
    是的,如果是这样的话,只能自定义oracle聚集函数,类似于功能wm_concathttp://blog.csdn.net/cnham/article/details/6206759我说错了,自定义函数估计也不行。
      

  5.   

     ORA-22813: 操作数值超出系统的限制我的colb的大小为4000
    这是因为字段大小太大了吗?
    是的,如果是这样的话,只能自定义oracle聚集函数,类似于功能wm_concathttp://blog.csdn.net/cnham/article/details/6206759wm_concat 函数的最大长度是varchar(2000)的是吗?能修改成clob(4000)吗