小弟现遇到一个问题,清各位大虾指教。
  我有一个select 语句   select msinfo_id from tb_cm_msobject a,tb_cm_serv b where a.serv_id=b.obj_id    这个语句查到的值不止一个, 现在我有一个表 是 tb_temp_test 里面有一个 msinfo_id  和serv_id 字段我想把 select msinfo_id from tb_cm_msobject a,tb_cm_serv b where a.serv_id=b.obj_id 这条语句得到的多个值插入到tb_temp_test 表里的 msinfo_id  字段 条件是 serv_id 相等。请问怎么将查到的多个值 插入到 msinfo_id  字段 多个值之间用 一个符号分隔??
    这个值为多少个不清楚,但最多为10个                                                          小弟跪谢。

解决方案 »

  1.   

    单用sql是做不到的,用pl/sql写个函数就很容易
    CREATE OR REPLACE FUNCTION get_msinfo_ids (p_serv_id INTEGER) RETURN VARCHAR2 IS
       w_ret VARCHAR2(4000);
    BEGIN
       FOR r IN (SELECT msinfo_id FROM tb_cm_msobject a,tb_cm_serv b 
                  WHERE a.serv_id=b.obj_id AND a.serv_id = p_serv_id
                  ORDER BY 1) LOOP
          w_ret := w_ret || r.msinfo_id || ',';
       END LOOP;
       RETURN w_ret;
    END get_msinfo_ids;
    /
      

  2.   


    --10g不可以用wm_concat函数?
    select wm_concat(msinfo_id) from tb_cm_msobject a,tb_cm_serv b where a.serv_id=b.obj_id