2013-05-17 3 views
2

저장 프로 시저에서 값을 삽입 병합 기능을 사용하여?어떻게 이런 일을하려고

업데이트 1 : 대답은 NO

온라인 문서 http://msdn.microsoft.com/en-us/library/bb510625%28v=sql.105%29.aspx

VALUES (values_list) 상수, 변수, 또는 삽입 할 값을 반환하는 식의 쉼표로 구분 된 목록인가를 읽을입니다 목표는 입니다. 표현식에 EXECUTE 문을 포함 할 수 없습니다.

+0

[공개적으로 그리고 무료로 사용할 수있는 온라인 설명서에] (http://msdn.microsoft.com/en-us/library/bb510625%28v=sql.105%29.aspx), 유효한 유일한 것은 '일치하지 않을 때'절은 : INSERT [(column_list)] {VALUES (values_list) | DEFAULT VALUES}'- 그래서 ** ** 데이터 값을 삽입하는 대신 저장 프로 시저를 호출 할 수 없다 ** –

+2

어쨌든'INSERT table EXEC dbo.procedure'가 아닌가? 왜 '병합 (MERGE)'을 넣을려고 노력하면서 이걸 복잡하게 만드나요? –

+0

@AaronBertrand 야간에 실행되는 작업입니다. 중복 된 데이터를 삽입하고 싶지 않습니다. – ValidfroM

답변

1

SSIS 패키지를 빌드하십시오. 새 데이터 흐름 작업을 만드십시오. 두 개의 OLEDB 소스를 사용하여 그 중 하나가 저장 프로 시저를 실행하고 다른 하나는 찾고있는 테이블에서 MERGE을 선택합니다. 둘 다 똑같은 순서로 주문되었는지 확인하십시오. 각 OLEDB 소스에 대한 고급 설정으로 이동하고 세트를 true로 정렬 한 다음 ORDERING BY 항목의 정렬 값을 설정합니다. 그런 다음 두 데이터 흐름을 MERGE JOIN으로 이동하십시오. 그런 다음 데이터 흐름을 조건부 분할로 보내고 INSULL(OrganisationID)으로 설정합니다. 결과 데이터 흐름을 사용하여 OLEDB 대상으로 이동합니다.

이미지가 부족하여 죄송합니다. 나중에 점심 시간에 바쁜 시간에 추가 할 예정입니다.