J'essaye d'écrire une procédure stockée pour calculer les différences entre deux tables d'entrée.Comment utiliser une procédure stockée avec des paramètres table pour comparer deux tables d'entrée
procédure stockée est utilisée pour calculer les différences entre les deux tables (les deux tables ont la même structure de table prédéfinie), la procédure stockée fournira les enregistrements ajoutés, supprimés ou mis à jour lorsque l'on compare le tableau 1 à la table 2.
Exemple :
- tableau 1 a New 3 fiches A, B et C
- tableau 2 a 3 records: B », C et D
B » représente un changement à un ou plusieurs champs dans l'enregistrement B
La sortie de cet appel de procédure stockée sera
A-addition
B-update
D-Removal
J'ai écrit une requête pour calculer la différence entre deux tables, mais trouver difficile de traduire en procédure stockée.
Structure de la table:
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
S'il vous plaît inclure aussi bien le script d'exécution de la procédure stockée.
Le question ici n'est pas sur la logique de comparaison de table, mais autour de passer dans les tables en tant que paramètres évalués de table en premier lieu, Cependant la suggestion à la nouvelle logique de comparaison est la bienvenue. –
Pourquoi les tables doivent-elles être passées en tant que paramètres? Pourquoi ne peuvent-ils pas être référencés directement par le SP? –
Parce que les tables peuvent ne pas toujours être les mêmes tables, je voudrais autoriser les changements futurs. D'où l'écriture d'une procédure stockée. –