Recientemente me uní a una empresa y me di cuenta de que muchos de los procedimientos almacenados tienen la misma sección de código repetida en todo momento. Me di cuenta porque tenía la tarea de cambiar una pequeña sección de ese código en cada SP que ocurría :)
Es un fragmento de código bastante fuerte, de aproximadamente 30 líneas. El código es parte de una instrucción de inserción, y básicamente une 4 tablas junto con WHERE/AND
condiciones que realmente no cambian de SP a SP. Se parece a lo siguiente:
...
...
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
AND MedicalPlanCode IN ('abc', 'def', 'ghi')
La única parte que cambia de SP a SP son los valores ( 'abc', 'def', 'ghi' )
También puede haber diferentes cantidades de esos valores, por lo que algunos SP tendrán 2 valores, otros tendrán 5, etc.
Todo lo que pienso cambia esa sección de código a SQL dinámico, y no estoy seguro de si eso vale la pena. Sin embargo, el programador en mí odia esta situación.
¿Debería intentar implementar alguna forma de reutilización de código? ¿Tendría un ROI? ¿Cuáles son mis opciones? Tuve que pasar por ~ 100 procedimientos almacenados, que tomaron aproximadamente una hora.
Los 100 SP están distribuidos en más de 20 bases de datos diferentes. Tengo permisos para crear una vista.
fuente
Esta solución reemplazaría la necesidad de tener más de 100 procs haciendo lo mismo. Tienes un proceso y una función. La función divide todos sus códigos médicos de una cadena a una tabla que puede usarse en una APLICACIÓN CRUZADA en el nuevo proceso. De esta manera solo tienes que llamar al único proceso. Por supuesto, tendría que actualizar todo el código llamando a los otros procesos para usar solo este.
fuente