2009-01-28 4 views
7

이미 존재하는 저장 프로 시저를 사용하여 삽입해야하는 데이터를 마이그레이션하고 있습니다. 저장 프로 시저에는 매개 변수와 삽입 된 행에 대한 ID의 반환 값 (select 문에서)이 있습니다. SSIS의 OLE DB 명령 내에서 필자는 매개 변수로 열 값을 전달하는 저장 프로 시저를 호출 할 수 있으며 일반적으로 저장 프로 시저의 출력 매개 변수를 사용하여 "id"출력을 처리합니다. 그러나 프로 시저가 select를 사용하여 id 값을 반환 할 때이 값을 반환 값으로 처리하는 방법을 잘 모르겠습니다. 여기에 작동하는 전에 사용한 것의 예입니다하지만 선택에서 반환 된 값 데리러해야합니다OLE DB 명령 내에서 저장 프로 시저의 SSIS 반환 값

exec dbo.uspInsertContactAddress 
@Address = ?, 
@ContactID = ?, 
@DeliveryMethodId = ?, 
@ID = ? output, 
@Version = ? output 

답변

12

내가 실제로 매우 간단이었다이 할 수있는 발견 방법 : 어쩌면 내가 'didn를하지만,

exec ? = dbo.StoredProc @param = ?, @param2 = ? 

는 다음 @RETURN_VALUE 사용 가능한 대상 컬럼에 답변

6

, SqlCommand에 속성에 변수 이름을 사용하지 마십시오 그냥 물음표와를 출력 매개 변수에 "OUT"또는 "OUTPUT"레이블.

출력 매개 변수 값을 얻는 방법은 OLE DB 명령 앞에 파이프 라인에 파생 열 변환을 넣어 프로 시저 결과를 캡처하는 열 (SSIS 변수에 매핑 됨)을 도입하는 것입니다.

자세한 방법은 화면 캡과 함께 수행하는 방법을 참조하십시오. OLEDB Command Transformation And Identity Columns 첫 번째 링크에서 사용 된 휴지통 목적지에 대해서는 Trash Destination Adapter을 참조하십시오. 이 같은 디버깅에 사용할 수있는 편리한 도구입니다.

+0

감사를 표시됩니다 내 질문에 정확히 내가해야 할 일을 설명하라. 위 코드는 제가 사용했던 코드이고, 프로 시저에 출력 매개 변수가 있으면 값을 얻을 수 있습니다. 문제는이 데이터베이스에 사용되는 프로 시저가 select를 호출하여 값을 얻는다는 것입니다. – bobwah

+0

죄송합니다. 문제가 무엇인지 확신 할 수 없습니다. 출력 매개 변수를 통해 선택 결과를 전달하지 않고 대신 결과 집합을 가져 오는 방법이 필요합니까? –

0

저는 항상 SQL 실행 작업 내에서 매개 변수 매핑을 사용하여 많은 성공을 거두었습니다. SQL 문은 "EXEC nameofstoredproc?, OUTPUT"이며 매개 변수의 위치를 ​​나타내는 물음표와 매개 변수가 출력 일 경우 OUTPUT이 있습니다.

적절한 변수 이름, 방향 (입력, 출력, ReturnValue) 및 데이터 유형을 사용하여 매핑의 매개 변수를 지정합니다. 저장된 프로 시저가 결과 집합을 통해 원하는 데이터를 반환하기 때문에 변수의 방향을 지정하여 ID 및 버전을 ReturnValue로 수집합니다. 그것은 당신을 위해 잘 작동합니다. 저장 프로 시저가 결과 집합을 반환하는 경우

1

는, 당신은 그것을 캡처해야합니다

DECLARE @results TABLE (
    [ID] INT NOT NULL 
) 

INSERT @results ([ID]) 
EXEC dbo.uspInsertContactAddress @Address = ?, @ContactID = ?, @DeliveryMethodId = ?, @ID = ? output, @Version = ? output 

SELECT * FROM @results 

참고 : 나는 테이블 변수를 사용했다. SQL Server 버전에 따라 임시 테이블을 사용해야 할 수도 있습니다.

관련 문제