Microsoft SQL Server menyediakan mekanisme prosedur tersimpan untuk mempermudah proses pembangunan pangkalan data dengan mengumpulkan penyataan Transact-SQL ke dalam blok yang boleh diurus. Prosedur yang disusun dihargai oleh kebanyakan pemaju SQL Server yang mendapati kecekapan dan manfaat keselamatan yang mereka peroleh adalah pelaburan yang tepat pada masanya.
Manfaat Menggunakan Prosedur Tersimpan
Mengapa pembangun menggunakan prosedur yang disimpan?
Inilah manfaat utama teknologi ini:
- Pelaksanaan terdahulu: SQL Server menyusun setiap prosedur yang disimpan sekali dan kemudian menggunakan semula pelan pelaksanaan. Ini menyebabkan rangsangan prestasi yang luar biasa apabila prosedur tersimpan dipanggil berulang kali.
- Mengurangkan trafik pelanggan / pelayan: Sekiranya lebar jalur rangkaian menjadi kebimbangan dalam persekitaran anda, anda akan senang mengetahui prosedur yang disimpan dapat mengurangkan pertanyaan SQL yang panjang kepada satu baris yang dihantar melalui wayar.
- Penggunaan semula kod dan abstraksi pengaturcaraan yang cekap: Prosedur yang disimpan boleh digunakan oleh berbilang pengguna dan program klien. Sekiranya anda menggunakannya dengan cara yang dirancang, anda akan dapati kitaran pembangunan mengambil sedikit masa.
- Kawalan keselamatan yang dipertingkatkan: Anda boleh memberi kebenaran kepada pengguna untuk melaksanakan prosedur tersimpan secara bebas daripada kebenaran jadual yang mendasarinya.
Prosedur yang disimpan adalah sama dengan fungsi yang ditentukan pengguna, tetapi terdapat perbezaan yang halus.
Struktur
Prosedur yang disimpan adalah serupa dengan pembinaan yang dilihat dalam bahasa pengaturcaraan lain.
Mereka menerima data dalam bentuk parameter input yang ditentukan pada masa pelaksanaan. Parameter input (jika dilaksanakan) digunakan dalam pelaksanaan beberapa pernyataan yang menghasilkan beberapa keputusan. Hasil ini dikembalikan kepada persekitaran panggil melalui penggunaan rekod, parameter output dan kod pemulangan.
Itu mungkin berbunyi seperti bersuara, tetapi anda akan mendapati bahawa prosedur yang disimpan sebenarnya agak mudah.
Contoh
Mari kita lihat contoh praktikal yang berkaitan dengan jadual yang dinamakan inventori yang ditunjukkan di bahagian bawah halaman ini. Maklumat ini dikemas kini dalam masa nyata, dan pengurus gudang sentiasa memeriksa tahap produk yang disimpan di gudang mereka dan tersedia untuk penghantaran. Pada masa lalu, setiap pengurus akan menjalankan pertanyaan yang serupa dengan yang berikut:
Pilih produk, kuantitiDARI InventoriWHERE Gudang = 'FL'
Ini mengakibatkan prestasi tidak cekap di SQL Server. Setiap kali seorang pengurus gudang menyempurnakan pertanyaan itu, pelayan pangkalan data dipaksa untuk mengkompilasi semula pertanyaan dan melaksanakannya dari awal. Ia juga memerlukan pengurus gudang untuk mempunyai pengetahuan tentang SQL dan keizinan yang sesuai untuk mengakses maklumat jadual.Sebaliknya, proses itu dapat dipermudahkan melalui penggunaan prosedur tersimpan. Inilah kod untuk prosedur yang dipanggil sp_GetInventory yang mengambil semula tahap inventori untuk gudang tertentu. Pengurus gudang Florida kemudian boleh mengakses tahap inventori dengan mengeluarkan arahan: Pengurus gudang New York boleh menggunakan prosedur tersimpan yang sama untuk mengakses inventori kawasan tersebut: Memang, ini adalah contoh yang mudah, tetapi manfaat abstraksi dapat dilihat di sini. Pengurus gudang tidak perlu memahami SQL atau kerja dalaman prosedur. Dari perspektif prestasi, prosedur tersimpan berfungsi keajaiban. SQL Server mencipta pelan pelaksanaan sekali dan kemudian memulihkannya dengan memasukkan parameter yang bersesuaian pada masa pelaksanaan.Sekarang anda telah mempelajari manfaat prosedur yang tersimpan, keluar di sana dan gunakannya. Cuba beberapa contoh dan ukur peningkatan prestasi yang dicapai-anda akan kagum! Jadual InventoriLAKUKAN sp_GetInventory PROSEDUR@location varchar (10)ASPilih produk, kuantitiDARI InventoriWHERE Warehouse = @location
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory 'NY'
ID Produk Gudang Kuantiti 142 Kacang hijau NY 100 214 Kacang polong FL 200 825 Jagung NY 140 512 kacang lima NY 180 491 Tomato FL 80 379 Tembikai FL 85