2017-09-28 19 views
0

入れ子のwhileループでレコードを挿入しようとしています.BelowはSQLサーバーのストアドプロシージャであり、2つのレコードのみを挿入するため、4つのレコードを挿入する必要があります。何がここで間違っている。前もって感謝します。入れ子のWhileループでの挿入

create proc Insert_LeadDistributionClient 
--Insert_LeadDistributionClient 
@LeadDistribution_code varchar(1000) = '100,101' 
,@Client_code varchar(1000) ='1,2' 
,@medium_code varchar(1000) = '10,11' 
as 
begin 
declare @LeadDistributionLength int 
declare @ClientLength int 
declare @MediumLength int 

declare @SingleLeadDistCode int 
declare @SingleClientCode int 
declare @SingleMediumCode int 

select * into #LeadDistributionCode from dbo.Split(@LeadDistribution_code , ',') 
select * into #ClientCode from dbo.Split(@Client_code , ',') 
select * into #MediumCode from dbo.Split(@medium_code , ',') 

set @LeadDistributionLength = (select count(*) from #LeadDistributionCode) 
set @ClientLength = (select count(*) from #ClientCode) 
set @MediumLength = (select count(*) from #MediumCode) 

while(@ClientLength <> 0) 
begin 
    set @SingleClientCode = (select top 1 [data] from #ClientCode) 
    while(@LeadDistributionLength <> 0) 
    begin 
    set @SingleLeadDistCode = (select top 1 [data] from #LeadDistributionCode) 
    insert into leaddistributionclient(LeadDistribution_code,Client_code,Medium_Code , LeadRatio_Count , CurrentLead_Count,Is_Sent) 
    select @SingleLeadDistCode,@SingleClientCode,1 ,0 ,0 ,0 
    delete top (1) from #LeadDistributionCode 
    set @LeadDistributionLength = @LeadDistributionLength -1 
    end 
    delete top (1) from #ClientCode 
    set @ClientLength = @ClientLength - 1 
end 


drop table #LeadDistributionCode 
drop table #ClientCode 
drop table #MediumCode 


end 
+1

は、きっとあなたは、いくつかのprint文を追加し、SSMS – Rob

+0

ドン」に何が起こっているのかを見ることができますしながら、最初の先頭に次の行を追加

delete top (1) from #LeadDistributionCode 

この行を削除選択したデータについて何も知らなくても、それについて何かを言うのはかなり難しいと思いますか? –

+0

これをデバッグするときに何を学んだのですか? – GuidoG

答えて

0

set @LeadDistributionLength = (select count(*) from #LeadDistributionCode) 
関連する問題