这是部分asp.net代码 foreach (string cid in categories.Split(','))
            {
                strSql.Append(" INSERT INTO BrandRelation(CategoryId,BrandId)VALUES(" + cid + ",@BrandId)");
}环境是SQLServer2005,想写在存储过程中,如果categories 是用“,”分隔的varchar。如何实现这个for循环呢?

解决方案 »

  1.   

    如果是这样,最好是在.NET里把数组内容处理成一个个相应的记录,直接插到表中去,而不要由数据库去做这种效率比较差的工作.
      

  2.   

    存储过程接受categories这个参数,比如categories='12,45,23,66,11'
    我想知道如何在存储过程中实现这个for循环,因为还要做其它数据操作,所以写到一个存储过程中比较方便。
      

  3.   

    你把categories这个参数拆分为一个临时表#tb#tb12
    45
    23
    66
    11然后用这个临时表去匹配相关记录。
      

  4.   

    SQL里拆分的方法:
    declare @col varchar(1000)
    set @col='aa,b,dc,d,e,f'
    select substring(@col,number,charindex(',',@col+',',number+1)-number) from master..spt_values
    where type='p' and number<=len(@col) and substring(@col,number,1)<>',' and substring(','+@col,number,1)=','
    /*
    --------------------------------
    aa
    b
    dc
    d
    e
    f(6 行受影响)
    */
      

  5.   

    按楼上的回答,分拆了,怎么写循环和INSERT语句呢?
      

  6.   

    你是怎么做到的?
    master..spt_values
    这是DB自带的函数吗?
    能否帮忙解释下where条件里的意思?
    感谢!