1
BEGIN 
IF @TransType = 1 
BEGIN 
     SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryHeaderHistory] ON 

     -- INSERT TO DELETE DELIVERY HEADER HISTORY 
     INSERT INTO @DRHeaderHist (RowID, CompanyName, ItemClassCode, DeliveryDate, 
            LoadingDate, DRNumber, Custnmbr, CustName,  
            TruckerID, PlateNumberID, TonnerID, DeliveryTypeID, 
            Remarks, DateCreated, DateModified, DatePosted, 
            UserName, FGUserName, DRUserName, PostedFG, 
            Import, CareOf, CareOfName) 
      SELECT * 
      FROM [Sales.DeliveryHeaderHistory] 
      WHERE DRNUMBER = @DR 

     INSERT INTO dbo.Sales.DeletedDeliveryHeaderHistory (RowID, CompanyName, 
         ItemClassCode, DeliveryDate, LoadingDate, DRNumber, Custnmbr, 
         CustName, TruckerID, PlateNumberID, TonnerID, DeliveryTypeID, 
         Remarks, DateCreated, DateModified, DatePosted, UserName, 
         FGUserName, DRUserName, PostedFG, Import, CareOf, CareOfName) 
      SELECT * 
      FROM @DRHeaderHist 

SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryHeaderHistory] OFF 
SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryDetailsHistory] ON 

-- INSERT TO DELETE DELIVERY DETAIL HISTORY 

INSERT INTO @DRDetailsHist (RowID, CompanyName, DRNumber, OrderDocNum, OFLineNumber, LineNumber, Quantity, UofM, KgsPerBag, Itemnmbr, 
                TotalKgs, ItemDesc, VariantCode, VariantDesc, ProductionCode, OrderDate, DateNeeded, Week, Month1, PostedFG) 
SELECT * from [dbo].[Sales.DeliveryDetailsHistory] WHERE DRNUMBER = @DR 


INSERT INTO [dbo].[Sales.DeletedDeliveryDetailsHistory] (RowID, CompanyName, DRNumber, OrderDocNum, OFLineNumber, LineNumber, Quantity, UofM, KgsPerBag, Itemnmbr, 
                TotalKgs, ItemDesc, VariantCode, VariantDesc, ProductionCode, OrderDate, DateNeeded, Week, Month, PostedFG) 
SELECT * FROM @DRDetailsHist 

SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryDetailsHistory] OFF 
END 
END 

在存儲過程中的查詢這是可能的,因爲我得到一個錯誤SQL Server查詢,存儲過程表的多個IDENTITY_INSERT創建存檔記錄

消息208,級別16,狀態1,過程SFC_spTransferDRtoDeleteArchives,第85行
無效的對象名稱'dbo.Sales.DeletedDeliveryHeaderHistory'。

我想找出一個解決方案,創建一個存儲過程中多個表上的數據傳輸的存儲過程只是想知道它是否可能?或者可能有解決方案或不可以。

回答

1

您在此腳本中有語法錯誤。 但是我不知道爲什麼要在表格名稱中嵌入一段時間。您需要更明智地使用方括號:

IF @TransType = 1 

BEGIN 

SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryHeaderHistory] ON 

-- INSERT TO DELETE DELIVERY HEADER HISTORY 

INSERT INTO @DRHeaderHist (RowID, CompanyName, ItemClassCode, DeliveryDate, LoadingDate, DRNumber, Custnmbr, CustName, TruckerID, PlateNumberID, TonnerID, DeliveryTypeID, 
          Remarks, DateCreated, DateModified, DatePosted, UserName, FGUserName, DRUserName, PostedFG, Import, CareOf, CareOfName) 
SELECT * from [Sales.DeliveryHeaderHistory] WHERE DRNUMBER = @DR 



----------------v 
INSERT INTO dbo.[Sales.DeletedDeliveryHeaderHistory] (RowID, CompanyName, ItemClassCode, DeliveryDate, LoadingDate, DRNumber, Custnmbr, CustName, TruckerID, PlateNumberID, TonnerID, DeliveryTypeID, 
                Remarks, DateCreated, DateModified, DatePosted, UserName, FGUserName, DRUserName, PostedFG, Import, CareOf, CareOfName) 
SELECT * FROM @DRHeaderHist 

SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryHeaderHistory] OFF 
SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryDetailsHistory] ON 

-- INSERT TO DELETE DELIVERY DETAIL HISTORY 

INSERT INTO @DRDetailsHist (RowID, CompanyName, DRNumber, OrderDocNum, OFLineNumber, LineNumber, Quantity, UofM, KgsPerBag, Itemnmbr, 
                TotalKgs, ItemDesc, VariantCode, VariantDesc, ProductionCode, OrderDate, DateNeeded, Week, Month1, PostedFG) 
SELECT * from [dbo].[Sales.DeliveryDetailsHistory] WHERE DRNUMBER = @DR 




INSERT INTO [dbo].[Sales.DeletedDeliveryDetailsHistory] (RowID, CompanyName, DRNumber, OrderDocNum, OFLineNumber, LineNumber, Quantity, UofM, KgsPerBag, Itemnmbr, 
                TotalKgs, ItemDesc, VariantCode, VariantDesc, ProductionCode, OrderDate, DateNeeded, Week, Month, PostedFG) 
SELECT * FROM @DRDetailsHist 

SET IDENTITY_INSERT [dbo].[Sales.DeletedDeliveryDetailsHistory] OFF 

END 

我注意到需要方括號的地方。