SQL Server 中没有数组类型,用varchar 代替吧

解决方案 »

  1.   


    传入一个大的string 用 ;分割在存储过程中 split(;)
    分开或者写成多个的小存储过程
    一个insert 对应一个存储过程
    便于维护
      

  2.   

    在SQL SERVER中写个用户自定义函数,然后在存储过程中调用:
    你在客户端将内容组成“strValue|strValue1|strValue2|...",然后传入存储过程后,在存储过程中调用这个函数,@intPara为0是求出有值的总个数,如果为1就是第一个值
    CREATE FUNCTION  getValues 
    (
    @strPara nvarchar(4000),
    @intPara integer
    )  
    RETURNS nvarchar(200) AS  
    BEGIN 
    declare @intCount int
    declare @intTemp int
    declare @strTemp nvarchar(1)
    declare @strCount nvarchar(500)
    declare @strReturn nvarchar(200)
    declare @intLenth int

    --ini
    set @intTemp=0
    set @strCount=''
    set @strReturn=''
    set @intLenth=0 
    --int end
    if @intPara=0 
    begin
    set @intCount=len(@strPara )
    if @intCount>0 --取得值域数量
    begin
    set @intTemp=0
    WHILE @intTemp<>@intCount BEGIN
    set @intTemp=@intTemp+1
        set @strTemp=substring(@strPara,@intTemp,1) if @strTemp='|'
    begin
    set @intLenth=@intLenth+1
    end
    end
    end
    set  @strReturn=@intLenth
    end
    else
    begin set @intCount=len(@strPara)
    if @intCount>0   --按域取值
    begin
    set @intTemp=0
    WHILE @intTemp<>@intCount
    begin
    set @intTemp=@intTemp+1
        set @strTemp=substring(@strPara,@intTemp,1) if @strTemp='|'
    begin
    set @intLenth=@intLenth+1
    if @intLenth=@intPara
    begin
    set @strReturn=@strCount
    set @strCount=''
    break
    end
    else
    begin
    set @strCount='' 
    end

    end 
    else
    begin
    set @strCount=@strCount+@strTemp
    end


    end
    end end

    if @strReturn=''
    begin
    set @strReturn=null
                 end
    return @strReturn
     
    END
      

  3.   

    在存储过程中如下取值
    先取总数
    set @intTemp=4                                 --每四个一组做循环
    set @intLenth=dbo.getValues(@strValues,0)       --总数
    set @strValue=dbo.getValues(@strValues,1)      --取第一个值while @intTemp< @intLenth
    begin
    set @aaa=dbo.getValues(@strValues,@intTemp)
    set @Colum1=dbo.getValues(@strValues,@intTemp+1)
    set @Colum2=dbo.getValues(@strValues,@intTemp+2)
    set @intTemp=@intTemp+3
             insert into tab1 values(@aaa,@Colum1,@Colum2)
    end
      

  4.   

    togodblessyU(自由港):接好了,别乱丢,呵呵!
      

  5.   

    用个大的varchar传递,各分量之间用一个不会出现的符号作分隔,在SQL语句里解析。
      

  6.   

    TOwangier(冷眉):你的方法和我的不一样吗?
      

  7.   

    To godblessyU(自由港) :本来想结贴,不甘心,想再看看,放心,至少一般给你,呵呵