Saya baru-baru ini bergabung dengan sebuah perusahaan, dan saya baru saja memperhatikan bahwa banyak dari prosedur yang tersimpan memiliki bagian kode yang sama berulang. Saya perhatikan karena saya ditugaskan untuk mengubah bagian kecil dari kode itu di setiap SP yang terjadi :)
Ini adalah potongan kode yang cukup besar, sekitar 30 baris. Kode adalah bagian dari pernyataan penyisipan, dan pada dasarnya menggabungkan 4 tabel bersama dengan WHERE/AND
kondisi yang tidak benar-benar berubah dari SP ke SP. Itu terlihat mirip dengan di bawah ini:
...
...
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
AND MedicalPlanCode IN ('abc', 'def', 'ghi')
Satu-satunya bagian yang berubah dari SP ke SP adalah nilainya ( 'abc', 'def', 'ghi' )
Ada juga jumlah yang berbeda dari nilai-nilai itu, sehingga beberapa SP akan memiliki 2 nilai, yang lain akan memiliki 5, dll ...
Semua yang saya pikirkan tentang perubahan bagian kode menjadi SQL dinamis, dan saya tidak yakin apakah itu layak. Namun, programmer dalam diriku membenci situasi ini.
Haruskah saya mencoba menerapkan beberapa bentuk penggunaan kembali kode? Apakah ada ROI? Apa saja pilihan saya? Saya harus melalui ~ 100 prosedur tersimpan, yang memakan waktu sekitar satu jam.
100 SP tersebar di 20 atau lebih basis data yang berbeda. Saya memiliki izin untuk membuat tampilan.
sumber
Solusi ini akan menggantikan kebutuhan untuk memiliki 100+ procs melakukan hal yang sama. Anda memiliki proc dan fungsi. Fungsi ini membagi semua kode medis Anda dari string ke tabel yang dapat digunakan dalam CROSS BERLAKU di proc baru. Dengan cara ini Anda hanya perlu memanggil satu proc. Tentu saja Anda harus memperbarui semua kode yang memanggil procs lain untuk menggunakan yang ini saja.
sumber