ForEachループコンテナのSSISでExecute SQL Taskに2つのストアドプロシージャを使用しています。最初のプロシージャから私は2番目のストアドプロシージャを動的にアクセスしたいscope_identityとして値を返す.Belowはストアドプロシージャです。最初のストアドプロシージャ: -SSISでストアドプロシージャからの戻り値を動的に取得
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 [email protected]
end
私が正しく取得しているすべてのものと、変数@fileidoにスコープIDの値を取っています。私は3つのファイルを持っていると私は1つのファイルを取得するたびにFileIdの値を返すスコープのアイデンティティをしたい。しかし、私は戻り値を3にしています。しかし、私は値が1、2、3として返されることを願っています。 これを行う正しい方法は、毎回戻り値を別々に得るためです。
私はForEachループコンテナとファイルの列挙子を使用しました。スコープIDの値は1つずつ取り出されるのではなく、一度に取り出されます。スコープ識別情報は、1つの値、すなわち識別情報の最後の値である3を返すだけです。つまり、各ファイルが最初のファイルの場合は1、最後のファイルの場合は2、最後のファイルの場合は3のように、異なる値のアイデンティティを返すたびに値を動的に返しません。 –
ループ内のSPに対して2つの実行タスクも使用していますか? – Kapil
はい、それぞれのために1番目のspすなわちtoinsertTmとtoinsertTx sp –