declare @next int
declare @CurrentId int
set @next=1
while @next<=dbo.Get_StrArrayLength(@ReterId,',')
begin
set @CurrentId=dbo.Get_StrArrayStrOfIndex(@ReterId,',',@next)
INSERT INTO [L_ReterInfo](
[CreateTime],[UserProId],[ReterId],[Weight],[Status],[Re]
)VALUES(
GETDATE(),@Id,@CurrentId,@ReterWeight,@Status,@Re
)

declare @nexts int    
declare @CurrentIdss int
while @nexts<=dbo.Get_StrArrayLength(@ByReterId,',')
begin
set @CurrentIdss=dbo.Get_StrArrayStrOfIndex(@ByReterId,',',@next)
INSERT INTO [L_ByReterInfo](
[CreateTime],[UserProId],[ReterId],[ByReterId]
)VALUES(
GETDATE(),@Id,@CurrentId,@CurrentIdss
)
set @nexts=@nexts+1
end
set @next=@next+1
end
循环里面的内层循环为什么不执行?

解决方案 »

  1.   

    declare @next int
    declare @CurrentId int
    declare @nexts int    
    declare @CurrentIdss int
    declare @End1 int
    declare @End2 int
    set @next=1
    set @End1 = dbo.Get_StrArrayLength(@ReterId,',')while @next<=@End1
    begin
        set @CurrentId=dbo.Get_StrArrayStrOfIndex(@ReterId,',',@next)
        INSERT INTO [L_ReterInfo](
        [CreateTime],[UserProId],[ReterId],[Weight],[Status],[Re]
        )VALUES(
        GETDATE(),@Id,@CurrentId,@ReterWeight,@Status,@Re
        )
        set @nexts = 1
        set @End2 = =dbo.Get_StrArrayLength(@ByReterId /*这在那里定义 赋值的?*/,',')
        while @nexts<=@End2
        begin
            set @CurrentIdss=dbo.Get_StrArrayStrOfIndex(@ByReterId,',',@next)
            INSERT INTO [L_ByReterInfo](
            [CreateTime],[UserProId],[ReterId],[ByReterId]
            )VALUES(
            GETDATE(),@Id,@CurrentId,@CurrentIdss
            )
            set @nexts=@nexts+1
        end
        set @next=@next+1
    end
      

  2.   

    ALTER PROCEDURE [dbo].[L_UseProAndReterInfo_ADD]
    --使用方案信息
    @Id int output,
    @ProName nvarchar(50),
    @ReterId nvarchar(100),
    @Weight nvarchar(100),
    @ByReterId nvarchar(100),
    @QuotaId nvarchar(200),
    @BeginTime datetime,
    @EndTime datetime,
    @Status int,
    @isReter int,
    @Re nvarchar(200),--考核人信息
    @ReterWeight int,
    @ReterInfoStatus int,
    @ReterRe nvarchar(200)
     AS 
    INSERT INTO [L_UsePro](
    [ProName],[ReterId],[Weight],[ByReterId],[QuotaId],[BeginTime],[EndTime],[Status],[isReter],[Re]
    )VALUES(
    @ProName,@ReterId,@Weight,@ByReterId,@QuotaId,@BeginTime,@EndTime,@Status,@isReter,@Re
    )
    SET @Id = @@IDENTITY declare @next int
    declare @CurrentId int
    declare @nexts int    
    declare @CurrentIdss int
    declare @end1 int
    declare @end2 int

    set @next=1
    set @end1=dbo.Get_StrArrayLength(@ReterId,',')
    while @next<=@end1
    begin
    set @CurrentId=dbo.Get_StrArrayStrOfIndex(@ReterId,',',@next)
    INSERT INTO [L_ReterInfo](
    [CreateTime],[UserProId],[ReterId],[Weight],[Status],[Re]
    )VALUES(
    GETDATE(),@Id,@CurrentId,@ReterWeight,@Status,@Re
    )

    set @end2=dbo.Get_StrArrayLength(@ByReterId,',')
    while @nexts<=@end2
    begin
    set @CurrentIdss=dbo.Get_StrArrayStrOfIndex(@ByReterId,',',@next)
    INSERT INTO [L_ByReterInfo](
    [CreateTime],[UserProId],[ReterId],[ByReterId]
    )VALUES(
    GETDATE(),@Id,@CurrentId,@CurrentIdss
    )
    set @nexts=@nexts+1
    end
    set @next=@next+1
    end
    end
    试了,还是不行!再帮忙看看。
      

  3.   

    ALTER PROCEDURE [dbo].[L_UseProAndReterInfo_ADD]
    --使用方案信息
    @Id int output,
    @ProName nvarchar(50),
    @ReterId nvarchar(100),
    @Weight nvarchar(100),
    @ByReterId nvarchar(100),
    @QuotaId nvarchar(200),
    @BeginTime datetime,
    @EndTime datetime,
    @Status int,
    @isReter int,
    @Re nvarchar(200),
    --考核人信息
    @ReterWeight int,
    @ReterInfoStatus int,
    @ReterRe nvarchar(200)
    AS  
    begin
    declare @next int
    declare @CurrentId int
    declare @nexts int   
    declare @CurrentIdss int
    declare @end1 int
    declare @end2 int INSERT INTO [L_UsePro]([ProName],[ReterId],[Weight],[ByReterId],[QuotaId],[BeginTime],[EndTime],[Status],[isReter],[Re])
    VALUES(@ProName,@ReterId,@Weight,@ByReterId,@QuotaId,@BeginTime,@EndTime,@Status,@isReter,@Re)
    SET @Id = @@IDENTITY

    set @next=1
    set @end1=dbo.Get_StrArrayLength(@ReterId,',')
    while @next<=@end1
    begin
    set @CurrentId=dbo.Get_StrArrayStrOfIndex(@ReterId,',',@next)

    INSERT INTO [L_ReterInfo]([CreateTime],[UserProId],[ReterId],[Weight],[Status],[Re])
    VALUES(GETDATE(),@Id,@CurrentId,@ReterWeight,@Status,@Re) set @end2=dbo.Get_StrArrayLength(@ByReterId,',')
    while @nexts<=@end2
    begin
    set @CurrentIdss=dbo.Get_StrArrayStrOfIndex(@ByReterId,',',@next)
    INSERT INTO [L_ByReterInfo]([CreateTime],[UserProId],[ReterId],[ByReterId])
    VALUES(GETDATE(),@Id,@CurrentId,@CurrentIdss)
    set @nexts=@nexts+1
    end
    set @next=@next+1
    end
    end