我想写一个存储过程来计算两个输入表之间的差异。如何使用存储过程与表值参数比较两个输入表
存储过程被用来计算(两个表具有相同的预定义的表结构)中,存储过程会提供记录添加,删除或比较表1〜表2
实施例时更新两个表之间的差异:
- 表1新的具有3个记录:A,B和C
- 表2具有3个记录:B”,C和d
B”表示记录B内的变化的一个或多个字段
这个存储过程调用的输出将是
A-addition
B-update
D-Removal
我已书写的查询,以计算两个表之间的差值,但发现很难翻译成存储过程。
表结构:
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引用? –
因为表格可能并不总是相同的表格,所以我想考虑将来的更改。因此编写一个存储过程。 –