Prosedur tersimpan adalah kumpulan pernyataan SQL yang dapat dieksekusi dalam beberapa cara. Sebagian besar DBM utama mendukung prosedur tersimpan; Namun, tidak semua melakukannya. Anda perlu memverifikasi dengan dokumentasi bantuan DBMS khusus Anda. Karena saya paling akrab dengan SQL Server, saya akan menggunakannya sebagai sampel saya.
Untuk membuat prosedur tersimpan sintaksnya cukup sederhana:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Jadi misalnya:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Manfaat prosedur tersimpan adalah Anda dapat memusatkan logika akses data ke satu tempat yang kemudian mudah dioptimalkan oleh DBA. Prosedur tersimpan juga memiliki manfaat keamanan karena Anda dapat memberikan hak eksekusi ke prosedur tersimpan tetapi pengguna tidak perlu memiliki izin baca/tulis pada tabel yang mendasarinya. Ini adalah langkah pertama yang baik untuk melawan injeksi SQL.
Prosedur tersimpan memang memiliki kelemahan, pada dasarnya pemeliharaan yang terkait dengan operasi CRUD dasar Anda. Katakanlah untuk setiap tabel Anda memiliki Sisipkan, Perbarui, Hapus dan setidaknya satu pilih berdasarkan kunci utama, itu berarti setiap tabel akan memiliki 4 prosedur. Sekarang ambil database ukuran 400 tabel yang layak, dan Anda memiliki 1600 prosedur! Dan itu dengan asumsi Anda tidak memiliki duplikat yang mungkin Anda miliki.
Di sinilah menggunakan ORM atau metode lain untuk secara otomatis menghasilkan operasi CRUD dasar Anda memiliki banyak manfaat.