Skip to main content

Mencipta Prosedur Tersimpan untuk SQL Server Anda

Prosedur Tersimpan (Stored Procedure) - Basis Data (April 2025)

Prosedur Tersimpan (Stored Procedure) - Basis Data (April 2025)
Anonim

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.

LAKUKAN sp_GetInventory PROSEDUR@location varchar (10)ASPilih produk, kuantitiDARI InventoriWHERE Warehouse = @location

Pengurus gudang Florida kemudian boleh mengakses tahap inventori dengan mengeluarkan arahan:

EXECUTE sp_GetInventory 'FL'

Pengurus gudang New York boleh menggunakan prosedur tersimpan yang sama untuk mengakses inventori kawasan tersebut:

EXECUTE sp_GetInventory 'NY'

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 Inventori

IDProdukGudangKuantiti
142Kacang hijauNY100
214Kacang polongFL200
825JagungNY140
512kacang limaNY180
491TomatoFL80
379TembikaiFL85