Recentemente, ingressei em uma empresa e notei que muitos dos procedimentos armazenados têm a mesma seção de código repetida. Notei porque fui encarregado de alterar uma pequena seção desse código em todos os SP em que ocorreu :)
É um pedaço de código bastante robusto, com cerca de 30 linhas. O código faz parte de uma instrução de inserção e basicamente une 4 tabelas com WHERE/AND
condições que realmente não mudam de SP para SP. É semelhante ao abaixo:
...
...
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
AND MedicalPlanCode IN ('abc', 'def', 'ghi')
A única parte que muda de SP para SP são os valores ( 'abc', 'def', 'ghi' )
Também pode haver quantidades diferentes desses valores, portanto alguns SPs terão 2 valores, outros terão 5, etc ...
Tudo o que penso muda essa seção de código para SQL dinâmico e não tenho certeza se vale a pena. No entanto, o programador em mim odeia essa situação.
Devo tentar implementar alguma forma de reutilização de código? Teria um ROI? Quais são as minhas opções? Eu tive que passar por ~ 100 procedimentos armazenados, o que levou cerca de uma hora.
Os 100 SP estão espalhados por mais de 20 bancos de dados diferentes. Eu tenho permissões para criar uma exibição.
fonte
Essa solução substituiria a necessidade de ter mais de 100 procs fazendo a mesma coisa. você tem um proc e uma função. A função divide todos os seus códigos médicos de uma string para uma tabela que pode ser usada em um CROSS APPLY no novo proc. Dessa forma, você só precisa chamar o proc. Claro que você teria que atualizar todo o código chamando os outros procs para usar apenas este.
fonte