2016-04-13 12 views
0

Ich verwende SQL Server 2008. Ich möchte Daten von einem temp table zu database einfügen. Ich verwende While loop, um Daten aus der temporären Tabelle in die Datenbanktabelle einzufügen. Jetzt bin vor mir ein Problem aufgetreten:Es gibt bereits ein Objekt mit dem Namen 'PDBCompr' in der Datenbank

Objekt bereits in der Datenbank vorhanden ist.

declare @rev as int , 
    @sQuotationNo NVARCHAR(15),                      
    @sQRevNo int                        
    set @rev=(select top 1 QRevNo from PDBCompr Where QuotationNo='JCS_G1415_008' and QRevNo<>'3' order by QRevNo desc) 

    ;with cte as 
    ( 
    SELECT  
    ROW_NUMBER() OVER(ORDER BY QuotationNo) AS sSLNO,             
    [CompanyCode] ,  
    [ProjectCode] , 
    [PRevNo], 
    [CSlNo],  
    [ComprDescription] ,  
    [PID] ,  
    [RatingCode] ,  
    [Rating] ,  
    [StdSystems] ,  
    [BoosterSystems] ,  
    [GCUSystems] ,  
    [KOFSystems] ,  
    [HeaterSystems] ,  
    [OtherSystems] ,  
    [Comments] ,  
    [Currency1] ,  
    [UnitPrice1] ,  
    [Currency2] ,  
    [ExchRate2] ,  
    [UnitPrice2] ,  
    [Currency3],  
    [ExchRate3] ,  
    [UnitPrice3] ,  
    [CreateId] ,  
    [CreateDate] ,  
    [UpdateId] ,  
    [UpdateDate]                       
    from PDBCompr   
    where QuotationNo='JCS_G1415_008' and CompanyCode ='001' and QRevNo ='2'    
    and AddCmprId not in (select distinct AddCmprId from PDBCompr where QuotationNo='JCS_G1415_008' and CompanyCode ='001' and QRevNo ='3' ) 
    )  

    select * into #temp from cte 

    declare @cnt int , @loopCnt int=1 
    select @cnt =(select COUNT(*) from #temp) 

    while (@loopCnt<[email protected]) 
    begin 

    ;with cte2 as 
    (
    SELECT  
    sSLNO,             
    [CompanyCode] ,  
    [ProjectCode] ,   
    (select Max(PRevNo)+1 from PDBCompr) [PRevNo],  
    (select Max(CSlNo) +1 from PDBCompr)[CSlNo],  
    [ComprDescription] ,  
    [PID] ,  
    [RatingCode] ,  
    [Rating] ,  
    [StdSystems] ,  
    [BoosterSystems] ,  
    [GCUSystems] ,  
    [KOFSystems] ,  
    [HeaterSystems] ,  
    [OtherSystems] ,  
    [Comments] ,  
    [Currency1] ,  
    [UnitPrice1] ,  
    [Currency2] ,  
    [ExchRate2] ,  
    [UnitPrice2] ,  
    [Currency3],  
    [ExchRate3] ,  
    [UnitPrice3] ,  
    [CreateId] ,  
    [CreateDate] ,  
    [UpdateId] ,  
    [UpdateDate]                       
     from #temp where [email protected] 
    )  

    select * into PDBCompr from cte2 
    set @loopCnt= @loopCnt+1 
    drop table #temp 
     end 

Bitte mir helfen, eine angemessene Lösung zu finden. Vielen Dank im Voraus

Antwort

0

select * in PDBCompr von CTE2

in dieser Zeile Sie werden wieder eine Tabelle „PDBCompr“ zu machen, aber in obigem Code Sie Datensätze aus dieser Tabelle sind die Auswahl bedeutet es seine bereits vorhanden .

so, wenn Sie Datensatz in dieser Tabelle einfügen möchten, dann müssen Sie Ihre Suche zu starten wie folgt:

Einsatz in PDBCompr * wählen Sie aus CTE2

Verwandte Themen