我在ForEach循环容器中的SSIS中的Execute SQL Task中使用了2个存储过程。从第一个过程我返回值作为scope_identity我想要动态访问第二个存储过程。下面是存储过程。第一个存储过程: -
ALTER PROCEDURE [dbo].[insertTm]
@filename nvarchar(128),
@date date,
@count int,
@fileid int output
AS
BEGIN
INSERT INTO TmRecruitment(FileName,FileLoadDate,RecordCount)
VALUES (@filename, @date, @count)
SET @fileid=SCOPE_IDENTITY()
RETURN @fileid
END
I have created appropriate variables and mapped 3 variables as input and 1 variable as output variable to recieve the value of scope identity.
Second stored procedure is :-
ALTER proc [dbo].[toinsertTx]
(@fileido int)
as
begin
insert into TxRecruitment
(JobReqID,TemplateName,JobType,JobLevel,JobTitle,HeadcountType,Backfill,RequisitionStatus,Status,CurrentApprover,Department,SubDepartment
,CostCenterID,Country,JobPostingLocation,DepartmentHead,SubDeptHead,HiringManager,BudgetController,Recruiter,DateCreated,ApprovedDate
,Age,TimeToReqApproval,NoOfDaysOpen)
select * from TsRecruitment
update TxRecruitment set FileId=@fileido
end
我正确得到的所有东西,我将范围标识的值转换为变量@fileido。我有3个文件,我希望范围标识在每次获取一个文件时返回FileId的值。但我得到的返回值只有一个为3.但我希望将值返回为1然后是2然后是3。 应该采取什么样的正确方法,以便每次都获得不同的返回值。
答案 0 :(得分:0)
在每个循环容器中使用a,其中包含两个执行sql任务,首先分别用于[dbo]。[insertTm],第二个用于[dbo]。[toinsertTx]。你可以使用For ADO枚举器的每个循环,如果文件名和[dbo]的其他输入详细信息。[insertTm]从表中选取,如果从文件中选取文件名和其他详细信息,请使用文件枚举器。这将继续更新[dbo]。[insertTm]的输入变量,并且可以获取具有当前作用域标识的SP的输出并将其传递给第二个SP。