Rameez Javed

Rameez Javed

  • NA
  • 395
  • 61.7k

Duplicate Entry Inserted While inserting DataTable

Oct 19 2018 2:10 AM
Can anybody guide me, i'm inserting DataTable in database, using type table, at the same time i'm returning the 2 fields. The issue i'm suffering with is if there are 7 entries in DataTable to be inserted, then 14 entries will be inserted.
 
I'm i doing it wrong? what could be the right way to do this... Return is perfectly working... issue is just inserting double the num of rows in dt to be inserted
  1. ALTER PROCEDURE [dbo].[proc_InsertStore_Recvry]  
  2. (@dt_Recovery Recovery_Store READONLY)  
  3. AS  
  4. Declare @RecoveryIDs as Table (IDs int, ClientIds int)  
  5. declare @StoreID int  
  6. declare @ClientID int  
  7. declare @Arrears decimal(18, 2)  
  8. declare @NetDues decimal(18, 2)  
  9. declare @Received decimal(18, 2)  
  10. Declare @RecoveryRecID int  
  11. begin  
  12. select * into #tempTable from @dt_Recovery  
  13. declare @Count int  
  14. set @Count= (select COUNT(*) from #tempTable)  
  15. while(@Count > 0)  
  16. begin  
  17. set @Count = @Count-1  
  18. set @ClientID = (Select top 1 ClientID from #tempTable)  
  19. set @StoredID = (Select top 1 StoredID from #tempTable where ClientID=@ClientID)  
  20. set @Arrears = (Select top 1 Arrears from #tempTable where ClientID=@ClientID)  
  21. set @NetDues = (Select top 1 NDues from #tempTable where ClientID=@ClientID)  
  22. set @Received = (Select top 1 Received from #tempTable where ClientID=@ClientID)  
  23. Insert into tblRecovery (StoreID, ClientID, Arrears, NetDues, Received)  
  24. values (@StoreID,@ClientID,@Arrears,@NetDues,@Received)  
  25. select @RecoveryID = Scope_Identity()  
  26. insert into @RecoveryIDs (IDs,ClientIds) values (@RecoveryID, @ClientID )  
  27. delete from #tempTable where ClientID=@ClientID  
  28. end  
  29. Select * from @RecoveryIDs 

Answers (1)