1.我用的是pl/sql.
2,传入的存储过程不定长,以","分隔,比如:aaaaaaaaaa,aaaa,aaa,aa.
3.拆分后的字符串会做为select 语句的条件,整个sp 返回CURSOR 用来fill 一个dataTable.
  请大家帮我想想!
   谢谢!

解决方案 »

  1.   

    先找第一个逗号的位置,然后用substr截取分成2段
      

  2.   


    给出拆分字符串的sql,至于返回cursor的procedure例子很多,改改就可以了。
    我给出的这个拆分sql可以在sql中链接使用。 
    SELECT DECODE(INSTR('aaaaaaaaaa,aaaa,aaa,aa,', ','),
                  0,
                  'aaaaaaaaaa,aaaa,aaa,aa,',
                  SUBSTR('aaaaaaaaaa,aaaa,aaa,aa,',
                         DECODE(ROWNUM,
                                1,
                                1,
                                INSTR('aaaaaaaaaa,aaaa,aaa,aa,', ',', 1, ROWNUM - 1) + 1),
                         DECODE(ROWNUM,
                                1,
                                INSTR('aaaaaaaaaa,aaaa,aaa,aa,', ',', 1, ROWNUM) - 1,
                                (INSTR('aaaaaaaaaa,aaaa,aaa,aa,', ',', 1, ROWNUM) -
                                INSTR('aaaaaaaaaa,aaaa,aaa,aa,', ',', 1, ROWNUM - 1) - 1)))) PROMO_ID
      FROM DUAL
    CONNECT BY ROWNUM <=
               LENGTH('aaaaaaaaaa,aaaa,aaa,aa,') - LENGTH(REPLACE('aaaaaaaaaa,aaaa,aaa,aa,', ',', ''));
    ;
      

  3.   

     反正就是用substr+instr+rownum来分拆
    用replace+connect by来判断需要生成多少条
    固定长度的字符串简单的,我原始语句是固定长度的,6位一个字符串