1
我執行,將執行一個存儲過程,將讀取一個表中的記錄,並在目標表插入記錄基礎上,最後插入
繼轉儲記錄的SSIS SQL任務表的聲明我使用以達到
INSERT INTO dbo.GetParties
EXEC dbo.getParties_SSIS
我試圖使存儲過程足夠聰明,這樣,當它被執行的次數第二或正數它檢查目標表的最大和獲取記錄基礎從源表中找到。
如何處理第一次執行存儲過程,因爲目標表中沒有記錄?處理這個問題的最佳方式是什麼?
這是我的程序:
CREATE PROCEDURE [dbo].[getParties_SSIS]
AS
DECLARE @lastCompanyId INT
SELECT @lastCompanyId = MAX(companyId) FROM GetParties
SELECT
c.companyId,
cf.identifierValue dunsId,
c.companyName,
ct.companyTypeId, ct.companyTypeName,
cst.companyStatusTypeId, cst.companyStatusTypeName,
si.simpleIndustryId, si.simpleIndustryDescription,
ROW_NUMBER() OVER (ORDER BY c.companyId) AS position
FROM
ciqcompany c
LEFT JOIN
ciqSimpleIndustry si ON si.simpleIndustryId = c.simpleIndustryId
LEFT JOIN
ciqCompanyType ct ON ct.companyTypeId = c.companyTypeId
LEFT JOIN
ciqCompanyStatusType cst ON cst.companyStatusTypeId = c.companyStatusTypeId
LEFT JOIN
ciqCompanyCrossRef cf ON cf.companyId = c.companyId
AND cf.identifierTypeId = 6 AND cf.primaryFlag = 1
WHERE
c.companyId > @lastCompanyId
或'WHERE c.companyId> @lastCompanyId OR @lastCompanyId IS NULL'。畢竟,你假設companyId中沒有負數。 :) –
@TabAlleman但這是一個相對合理的假設。當然,我應該提到的東西。 :) –