J'ai récemment rejoint une entreprise et je viens de remarquer que la plupart des procédures stockées ont la même section de code répétée tout au long. J'ai remarqué parce que j'étais chargé de changer une petite section de ce code dans chaque SP qu'il s'est produit :)
C'est un morceau de code assez lourd, environ 30 lignes. Le code fait partie d'une instruction d'insertion, et il joint essentiellement 4 tables avec des WHERE/AND
conditions qui ne changent pas vraiment de SP en SP. Il ressemble à ci-dessous:
...
...
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
AND MedicalPlanCode IN ('abc', 'def', 'ghi')
La seule partie qui passe de SP à SP sont les valeurs ( 'abc', 'def', 'ghi' )
Il peut également y avoir différentes quantités de ces valeurs, donc certains SP auront 2 valeurs, d'autres en auront 5, etc ...
Tout ce à quoi je pense transforme cette section de code en SQL dynamique, et je ne sais pas si cela en vaut la peine. Cependant, le programmeur en moi déteste cette situation.
Dois-je essayer d'implémenter une forme de réutilisation de code? Aurait-il un retour sur investissement? Quelles sont mes options? J'ai dû passer par ~ 100 procédures stockées, ce qui a pris environ une heure.
Les 100 SP sont répartis sur une vingtaine de bases de données différentes. J'ai des autorisations pour créer une vue.
la source
Cette solution remplacerait la nécessité d'avoir plus de 100 procs faisant la même chose. vous avez un proc et une fonction. La fonction divise tous vos codes médicaux d'une chaîne en une table qui peut être utilisée dans une APPLICATION CROISÉE dans le nouveau proc. De cette façon, vous n'avez qu'à appeler le seul proc. Bien sûr, vous devrez mettre à jour tout le code appelant les autres procs pour utiliser uniquement celui-ci.
la source