【发布时间】:2017-07-13 22:14:45
【问题描述】:
我正在执行一个 SSIS SQL 任务,该任务将执行一个存储过程并从一个表中读取记录并将记录转储到目标表中
以下是我用来实现这一目标的陈述
INSERT INTO dbo.GetParties
EXEC dbo.getParties_SSIS
我正在尝试使存储过程足够智能,以便当它执行第二次或 n 次时,它会检查目标表的最大值并根据源表中的记录获取记录。
由于目标表中没有记录,我如何处理第一次执行存储过程?最好的处理方法是什么?
这是我的程序:
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
【问题讨论】:
标签: sql-server ssis