Microsoft SQL Server menyediakan mekanisme prosedur yang tersimpan untuk menyederhanakan proses pengembangan basis data dengan mengelompokkan pernyataan Transact-SQL ke dalam blok yang dapat dikelola. Prosedur yang tersimpan diapresiasi oleh sebagian besar pengembang SQL Server yang menemukan manfaat efisiensi dan keamanan yang mereka hasilkan merupakan investasi awal yang tepat waktu.
Manfaat Menggunakan Stored Procedures
Mengapa pengembang harus menggunakan prosedur yang tersimpan?
Berikut adalah manfaat utama teknologi ini:
- Pengerjaan yang dikompilasi: SQL Server mengkompilasi setiap prosedur yang tersimpan satu kali dan kemudian menggunakan kembali rencana eksekusi. Ini menghasilkan peningkatan kinerja yang luar biasa ketika prosedur yang tersimpan dipanggil berulang kali.
- Mengurangi kunjungan klien / server: Jika bandwidth jaringan menjadi perhatian di lingkungan Anda, Anda akan senang mengetahui bahwa prosedur yang tersimpan dapat mengurangi query SQL panjang ke satu baris yang ditransmisikan melalui kabel.
- Efisien penggunaan kembali kode dan abstraksi pemrograman: Prosedur yang tersimpan dapat digunakan oleh banyak pengguna dan program klien. Jika Anda memanfaatkannya secara terencana, Anda akan menemukan siklus pengembangan membutuhkan waktu lebih sedikit.
- Kontrol keamanan yang ditingkatkan: Anda dapat memberikan izin kepada pengguna untuk menjalankan prosedur tersimpan secara terpisah dari izin tabel yang mendasari.
Prosedur yang tersimpan serupa dengan fungsi yang ditentukan pengguna, tetapi ada perbedaan halus.
Struktur
Prosedur yang tersimpan mirip dengan konstruksi yang terlihat dalam bahasa pemrograman lainnya.
Mereka menerima data dalam bentuk parameter input yang ditentukan pada waktu eksekusi. Parameter input ini (jika diterapkan) digunakan dalam pelaksanaan serangkaian pernyataan yang menghasilkan beberapa hasil. Hasil ini dikembalikan ke lingkungan panggilan melalui penggunaan recordset, parameter output dan kode kembali.
Itu mungkin terdengar seperti suap, tetapi Anda akan menemukan bahwa prosedur yang tersimpan sebenarnya cukup sederhana.
Contoh
Mari kita lihat contoh praktis yang terkait dengan inventaris bernama tabel yang ditampilkan di bagian bawah halaman ini. Informasi ini diperbarui secara real time, dan manajer gudang terus-menerus memeriksa tingkat produk yang disimpan di gudang mereka dan tersedia untuk pengiriman. Di masa lalu, setiap pengelola akan menjalankan kueri yang serupa dengan yang berikut:
PILIH Produk, KuantitasDARI InventarisasiDI MANA Gudang = 'FL'
Ini mengakibatkan kinerja tidak efisien di SQL Server. Setiap kali seorang manajer gudang mengeksekusi query, server database terpaksa mengkompilasi ulang query dan mengeksekusinya dari awal. Ini juga mengharuskan manajer gudang untuk memiliki pengetahuan tentang SQL dan izin yang sesuai untuk mengakses informasi tabel.Sebaliknya, prosesnya dapat disederhanakan melalui penggunaan prosedur yang tersimpan. Berikut kode untuk prosedur yang disebut sp_GetInventory yang mengambil level inventaris untuk gudang tertentu. Manajer gudang Florida kemudian dapat mengakses tingkat persediaan dengan mengeluarkan perintah: Manajer gudang New York dapat menggunakan prosedur tersimpan yang sama untuk mengakses inventaris area tersebut: Memang, ini adalah contoh sederhana, tetapi manfaat abstraksi dapat dilihat di sini. Manajer gudang tidak perlu memahami SQL atau cara kerja bagian dalam prosedur. Dari perspektif kinerja, prosedur yang disimpan bekerja keajaiban. SQL Server membuat rencana eksekusi sekali dan kemudian mengaktifkan kembali dengan memasukkan parameter yang tepat pada waktu eksekusi.Sekarang setelah Anda mempelajari manfaat dari prosedur yang tersimpan, keluarlah dan gunakanlah. Coba beberapa contoh dan ukur peningkatan kinerja yang dicapai - Anda akan kagum! Tabel InventarisBUAT PROSEDUR sp_GetInventory@location varchar (10)SEBAGAIPILIH Produk, KuantitasDARI InventarisasiDI MANA Gudang = @lokasi
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory 'NY'
ID Produk Gudang Kuantitas 142 Kacang hijau NY 100 214 Kacang polong FL 200 825 Jagung NY 140 512 kacang lima NY 180 491 Tomat FL 80 379 Semangka FL 85