我正在編寫一些存儲過程以將用於當前年份記錄的表中的數據傳輸到用於存儲歷史數據的表中。我目前正在處理的一個示例是典型的主從關係,其中明細記錄顯然需要在主記錄之前處理。我寫了一個簡單的測試查詢來收集一些示例記錄,看看我是否正確編寫了基本的sql。爲什麼查詢自己執行而不是在存儲過程中執行
DECLARE @cuttoffdate date = '31/03/2009'
SELECT
*
FROM Landings.LandingDetails
INNER JOIN Landings.LandingHeaders
ON Landings.LandingHeaders.LandingId = Landings.LandingDetails.LandingId
WHERE Landings.LandingHeaders.LandingDate1 <= @cuttoffdate
SELECT
*
FROM Landings.LandingHeaders
WHERE Landings.LandingHeaders.LandingDate1 <= @cuttoffdate
這工作併產生我期望的兩組記錄。然而,當我再在存儲過程中使用:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [HistoricalData].[TransferAllLandingInformation]
-- Add the parameters for the stored procedure here
@cutoffdate date
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO HistoricalData.HistoricalLandingDetails
SELECT
*
FROM Landings.LandingDetails
INNER JOIN Landings.LandingHeaders
ON Landings.LandingHeaders.LandingId = Landings.LandingDetails.LandingId
WHERE Landings.LandingHeaders.LandingDate1 <= @cutoffdate
INSERT INTO HistoricalData.HistoricalLandingHeaders
SELECT
*
FROM Landings.LandingHeaders
WHERE Landings.LandingHeaders.LandingDate1 <= @cutoffdate
END
GO
它無法執行給我下面的錯誤:
Msg 213, Level 16, State 1, Procedure TransferAllLandingInformation, Line 12 Column name or number of supplied values does not match table definition.
線12是剛過BEGIN語句。
任何人都可以啓發我爲什麼發生這種情況。我絕不會聲稱在sql中流利,結果這個特殊的錯誤讓我目前陷入困境,我想從中學習。
只是爲了清楚起見,這是被寫入2012年SSMS
感謝
您正在試圖加入到HistoricalLandingDetails從FROM Landings.LandingDetails各個領域 INNER JOIN Landings.LandingHeaders – bummi