두 입력 테이블 간의 차이를 계산하는 저장 프로 시저를 작성하려고합니다.두 개의 입력 테이블을 비교하기 위해 테이블 반환 매개 변수와 함께 저장 프로 시저를 사용하는 방법
저장 프로 시저 개의 테이블 간의 차이를 (테이블 모두가 동일한 미리 정의 된 테이블 구조를 갖는다), 기록을 제공 할 프로 시저가 제거되거나 표 2
예 표 1과 비교할 때 업데이트 첨가 계산하는 데 사용 :
- 표 1은 새로운 3 개 기록 갖는다 : A, B 및 C를
- 표 2는 3 개 기록 가지고 B ', C 및 D 을
B '는,이 프로 시저 호출의 출력은 I가 두 표 사이의 차이를 계산하기위한 질의를 작성한
A-addition
B-update
D-Removal
것이다
레코드 B 내의 하나의 변화 나 여러 필드를 나타내고 스토어드 프로 시저로 변환하기가 어려웠습니다.
테이블 구조 :
X varchar (10)
Y int
Z datetime
SELECT
table1.*, ChangeType = 'Addition'
FROM
table1
WHERE
NOT EXISTS (SELECT *
FROM table2
WHERE table1.x = table2.x)
UNION ALL
SELECT
table2.*, ChangeType = 'Removal'
FROM
table2
WHERE
NOT EXISTS (SELECT *
FROM table1
WHERE table1.x = table2.x)
UNION ALL
SELECT
table1, ChangeType = 'Update'
FROM
table2
INNER JOIN
table1 ON table1.x = table2.x
WHERE
table1.Y <> table2.Y OR table1.Z <> table2.Z
또한뿐만 아니라 저장 프로 시저 실행 스크립트를 기입하십시오.
을 만들 여기에있는 질문은 테이블 비교 논리에 관한 것이 아니라 처음에는 테이블 값 매개 변수로 테이블을 전달하는 것입니다. 그러나 새로운 비교 논리에 대한 제안은 환영합니다. –
테이블을 매개 변수로 전달해야하는 이유는 무엇입니까? 왜 그들은 SP에 의해 직접적으로 참조 될 수 없습니까? –
테이블이 항상 같은 테이블이 아니기 때문에 향후 변경을 허용하고 싶습니다. 따라서 저장 프로 시저를 작성합니다. –