好,比如說我在web上進行input數據,由於input的是隨user的需求進行input.
在input的時候,不限制input的條數.可以input 1-n條紀錄.
那我就只能用相同名字的輸入框進行紀錄數據.在asp中紀錄的數據是以這種格式紀錄的
(234,2345,5645,65756,342,453,.....).
記錄了以後需要進行拆分,然後一個個數據進行input.
在asp中我可以實現.我希望現在將這些寫到存儲過程中.如何在存儲過程中進行這樣的拆分然後input Data.

解决方案 »

  1.   

    declare @a varchar(200), @b varchar(50), @c int
    set @a = 123,324,436,567,....
    while charIndex(',', @a) > 0
    {
      set @c = charIndex(',', @a)
      set @b = left(@a,@c-1)
      set @a = substring(@a, @c+1)
      insert into …… values (@b)
    }
    break
    insert into …… values (@a)办法笨了点儿
      

  2.   

    有2种方法:
    1.在前台处理,通过VB/VC的字符串的处理函数来分割,然后做为参数传入到INPUT SP.
    2.直接将该长字符川保存到一个过渡表种的NTEXT字段,然后SP或TRIGGER在后台处理,插入的相应的目标表。你可以根据自己的需求选择。
      

  3.   

    solution 1:
    declare @str as varchar(20)
    declare @iFor int
    declare @strTemp as varchar(10)
    declare @jFor intselect @str = 'a,bb,ccc,dddd,eeeeee'
    select @iFor = 1
    select @jFor = 1while (1 = 1)
    begin
    select @jFor = charindex(',', @str, @jFor)
    if @jFor = 0
    begin
    select @strTemp = right(@str, len(@str)-@iFor+1)
    print @strTemp
    break
    end
    select @strTemp = substring(@str,@iFor,@jFor-@iFor)
    print @strTemp
    select @iFor = @jFor+1
    select @jFor = @jFor+1
    endsolution 2declare @string varchar(1000)
    declare @xh char(10)
    declare @sh varchar(13)
    set @string='l,ll,xl,ml,xxl'
    set @string='select * into ##tmp from (select '''+replace(@string,',','''as str union all select ''')+''') a' 
    exec(@string)
    print @string
      

  4.   

    呵呵!和我在asp裡面用的方法查不多.
    Thanks weixiao51(三土) 
    不過你可能理解我所說的了.
    我是要將A1(21,3434,456,67,543....),B1(abc,cde,efg,ghi....)這樣的數組按照這種方式insert
    insert (A,B)values(21,abc)
    insert (A,B)values(3434,cde)
    ......
    能不能有更好的辦法呀.