2013-05-07 119 views
2

我試圖做一個INSERT INTO選擇從一個臨時表。我的問題是,我需要插入項目,並在插入語句中檢索插入項目的ID。如何使用Sql Server 2008獲取插入的scope_identities列表select?

如何獲取所插入的標識值的列表?

的代碼如下:

    SELECT O.OrderID, 
        O.SingleAgreementID , 
        O.OrderTypeID , 
        O.OrderStatusID , 
        O.Reference , 
        O.CreateDate , 
        O.ValidityDate , 
        O.DeliveredDate , 
        O.PathologyID , 
        O.DiscountTypeID , 
        O.DiscountAmount , 
        O.ValidityDays , 
        O.DeductibleTypeID , 
        O.DeductibleAmount , 
        O.LimitOrder , 
        O.Comments , 
        O.CreatedUserID , 
        O.StartPeriodDate , 
        O.EndPeriodDate , 
        O.GenerationDay , 
        O.ParentOrderID , 
        O.CanceledDate , 
        O.CanceledUserID INTO #TEMPORDERS 
       FROM dbo.[Order] O 
       WHERE O.GenerationDay = DAY(GETDATE() -1) 
         AND O.OrderTypeID = 2 
         AND @Yesterday BETWEEN CONVERT(VARCHAR(10),O.StartPeriodDate,111) AND CONVERT(VARCHAR(10),O.EndPeriodDate,111) 



       INSERT INTO dbo.[Order] 
         (SingleAgreementID , 
          OrderTypeID , 
          OrderStatusID , 
          Reference , 
          CreateDate , 
          ValidityDate , 
          DeliveredDate , 
          PathologyID , 
          DiscountTypeID , 
          DiscountAmount , 
          ValidityDays , 
          DeductibleTypeID , 
          DeductibleAmount , 
          LimitOrder , 
          Comments , 
          CreatedUserID , 
          StartPeriodDate , 
          EndPeriodDate , 
          GenerationDay , 
          ParentOrderID , 
          CanceledDate , 
          CanceledUserID 
         ) 
       SELECT TEMP.SingleAgreementID , 
         TEMP.OrderTypeID , 
         1 , 
         TEMP.Reference , 
         TEMP.CreateDate , 
         GETDATE() + TEMP.ValidityDays, 
         NULL , 
         TEMP.PathologyID , 
         TEMP.DiscountTypeID , 
         TEMP.DiscountAmount , 
         TEMP.ValidityDays , 
         TEMP.DeductibleTypeID , 
         TEMP.DeductibleAmount , 
         TEMP.LimitOrder , 
         TEMP.Comments , 
         'Orden Generada de manera automatica' , 
         TEMP.StartPeriodDate , 
         TEMP.EndPeriodDate , 
         TEMP.GenerationDay , 
         TEMP.OrderID , 
         NULL , 
         NULL 
       FROM #TEMPORDERS TEMP 

--Get all Ids inserted HERE 
    SELECT SCOPE_IDENTITY(); 
--Get the IDs saved and insert the detail. 

我不知道這是否可行與否?對此有何想法?

謝謝。

回答

3

您可以使用Output填充表個新ID的

Declare @OutputTable table(aNewid int) 

Insert into Table 
........ 
Output inserted.ID 

Select .... 
from InputTable 
+1

非常感謝你的幫助。 – 2013-05-07 15:04:11

3

嘗試這一個 -

INSERT INTO dbo.[Order] (
     SingleAgreementID 
    , OrderTypeID 
    , OrderStatusID 
... 
    ) 
OUTPUT INSERTED.[IdentityColumn] INTO #temp1 
SELECT t.SingleAgreementID 
    , t.OrderTypeID 
    , 1 
... 
FROM #TEMPORDERS t 

SELECT * FROM #temp1 
相關問題