Ich bin kürzlich einer Firma beigetreten und habe gerade festgestellt, dass bei vielen gespeicherten Prozeduren derselbe Codeabschnitt durchgehend wiederholt wird. Ich habe es bemerkt, weil ich beauftragt wurde, einen kleinen Abschnitt dieses Codes in jedem SP zu ändern, in dem er aufgetreten ist :)
Es ist ein ziemlich umfangreiches Stück Code, ungefähr 30 Zeilen. Der Code ist Teil einer Einfügeanweisung und verbindet im Grunde 4 Tabellen mit WHERE/AND
Bedingungen, die sich nicht wirklich von SP zu SP ändern. Es sieht ähnlich aus wie unten:
...
...
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
AND MedicalPlanCode IN ('abc', 'def', 'ghi')
Der einzige Teil, der sich von SP zu SP ändert, sind die Werte ( 'abc', 'def', 'ghi' ).
Es kann auch unterschiedliche Mengen dieser Werte geben, so dass einige SPs 2 Werte haben, andere 5 usw.
Alles, woran ich denke, ändert diesen Codeabschnitt in dynamisches SQL, und ich bin mir nicht sicher, ob sich das lohnt. Der Programmierer in mir hasst diese Situation jedoch.
Sollte ich versuchen, eine Form der Wiederverwendung von Code zu implementieren? Hätte es einen ROI? Was sind meine Optionen? Ich musste ~ 100 gespeicherte Prozeduren durchlaufen, was ungefähr eine Stunde dauerte.
Die 100 SPs sind auf etwa 20 verschiedene Datenbanken verteilt. Ich habe die Berechtigung, eine Ansicht zu erstellen.
quelle
Diese Lösung würde die Notwendigkeit ersetzen, dass mehr als 100 Procs dasselbe tun. Du hast einen Proc und eine Funktion. Die Funktion teilt alle Ihre medizinischen Codes von einer Zeichenfolge in eine Tabelle auf, die in einer CROSS APPLY im neuen Prozess verwendet werden kann. Auf diese Weise müssen Sie nur den einen Proc aufrufen. Natürlich müssten Sie den gesamten Code aktualisieren, der die anderen Prozesse aufruft, um nur diesen zu verwenden.
quelle