Rumah > Artikel > pangkalan data > Tulis fungsi dan prosedur tersimpan dalam SQL Server
Himpunan pernyataan SQL yang terkandung dalam prosedur dan fungsi tersimpan, objek pangkalan data yang digunakan untuk melaksanakan tugas tertentu (atau boleh juga digunakan dalam sains data). Kedua-duanya berbeza dalam banyak cara.
Dalam artikel ini, kita akan membincangkan fungsi dan prosedur secara terperinci serta perbezaannya.
Mari mulakan dengan prosedur tersimpan -
Kod SQL yang ditulis secara ringkas disimpan untuk digunakan semula beberapa kali, membentuk prosedur tersimpan. Jika anda boleh memikirkan pertanyaan yang anda kerap tulis, anda boleh menyimpannya sebagai prosedur tersimpan dan kemudian memanggil prosedur tersimpan itu untuk menjalankan kod SQL yang anda simpan sebagai sebahagian daripada prosedur tersimpan. Ini akan menyelamatkan anda daripada menulis soalan yang sama berulang kali.
Anda boleh berulang kali melaksanakan kod SQL yang sama dan memberikan parameter kepada prosedur yang disimpan. Seperti yang diperlukan, prosedur yang disimpan akan bertindak balas dengan sewajarnya berdasarkan nilai parameter yang dibekalkan.
Prestasi juga boleh dipertingkatkan melalui prosedur tersimpan. Satu set pernyataan SQL digunakan untuk melaksanakan pelbagai tugas. Pernyataan SQL yang dijalankan seterusnya bergantung pada keputusan pernyataan SQL awal dan logik bersyarat. Kenyataan SQL ini dan logik bersyarat yang terkandung di dalamnya boleh digabungkan menjadi satu pelan pelaksanaan tunggal pada pelayan dengan menulisnya ke dalam prosedur tersimpan. Memandangkan semua kerja dilakukan pada pelayan, logik bersyarat boleh dilakukan tanpa menyerahkan hasilnya kepada klien.
Setiap prosedur tersimpan disusun sekali oleh SQL Server dan kemudian pelan pelaksanaan digunakan semula. Apabila memanggil prosedur tersimpan dengan kerap, peningkatan prestasi adalah besar.
Jika lebar jalur rangkaian adalah isu dalam persekitaran anda, anda akan gembira mengetahui bahawa prosedur tersimpan boleh memampatkan carian SQL yang panjang ke dalam satu baris yang boleh dihantar melalui wayar.
Prosedur tersimpan tersedia untuk banyak pengguna dan aplikasi pelanggan. Jika anda menggunakannya dengan cara yang dirancang, masa yang diperlukan untuk melengkapkan kitaran pembangunan akan menjadi lebih singkat.
Berkecuali daripada kebenaran pada jadual asas, anda boleh memberikan pengguna akses untuk menjalankan prosedur tersimpan.
SQL Server menyokong dua jenis fungsi
Fungsi terbina dalam beroperasi mengikut definisi rujukan Transact-SQL dan tidak boleh diubah. Hanya penyataan Transact-SQL yang mengikut sintaks yang ditetapkan oleh rujukan Transact-SQL boleh menggunakan fungsi ini sebagai rujukan.
Sistem telah pun menentukan fungsi ini. Ia terbahagi kepada dua kategori -
Dalam tutorial ini, kami akan merujuk kepada jadual berikut -
ID |
Nama |
tag |
UMUR |
---|---|---|---|
1 |
teruk |
90 |
19 |
2 |
suresh |
50 |
20 |
3 |
pratik |
80 |
21 |
4 |
danraj |
95 |
19 |
5 |
RAM |
85 |
18 |
Operasi ini mengambil nilai sebagai input dan outputnya. Beberapa operasi skalar sistem termasuk -
bulat() - Membundarkan nombor kepada tiga digit terdekat. Sebagai contoh, pusingan(28.64851) akan menghasilkan 28.649
SELECT ROUND(MARKS,0) FROM students;
upper() - upper("english") mengembalikan bahasa Inggeris, lower("ENGLISH") mengembalikan bahasa Inggeris.
SELECT upper(NAME) FROM Students;
HARSH SURESH PRATIK DHANRAJ RAM
rand() - Menggunakan fungsi rand(), nombor rawak dalam julat akan dikembalikan. Contohnya, Rand(8), mengembalikan 0.71372242401 atau sebarang nombor lain yang dijana secara rawak.
Fungsi ini mengembalikan nilai tunggal, fungsi ini mengambil koleksi argumen input. Contohnya termasuk -
Avg() akan memberikan nilai purata untuk semua input yang disediakan.
SELECT AVG(MARKS) FROM Students;
80
Count() Fungsi ini akan mengembalikan bilangan baris yang memenuhi syarat yang diberikan.
SELECT COUNT(*) FROM Students;
5
Max() dan min() Fungsi max() dan min() akan mengembalikan nilai tertinggi dan terendah antara argumen yang dibekalkan.
SELECT MAX(AGE) FROM Students
21
SELECT MIN(AGE) FROM Students;
18
Buat fungsi Transact-SQL tersuai menggunakan arahan CREATE FUNCTION. Fungsi yang ditentukan pengguna menyediakan satu nilai dan memerlukan sifar hingga lebih banyak parameter input. Sesetengah fungsi takrif pengguna (UDF) mengembalikan nilai data tunggal, seperti nombor perpuluhan, aksara atau int.
Fungsi skalar yang ditentukan pengguna mengeluarkan nilai untuk setiap langkah operasi fungsi. Mengembalikan sebarang nilai jenis data dalam fungsi.
Fungsi jadual sebaris dengan nilai yang ditentukan pengguna melaksanakan operasi dan mengembalikan hasilnya sebagai jadual. Tiada badan BEGIN/END. Hanya gunakan pernyataan SELECT untuk mendapatkan keputusan.
Jika fungsi yang ditentukan pengguna mengandungi pernyataan SELECT yang tidak boleh diubah suai atau mengandungi berbilang pernyataan SELECT, hasil yang diberikannya tidak akan berubah. Kita mesti menyatakan secara eksplisit pembolehubah jadual dan menerangkan nilai yang boleh diambil daripada pelbagai pertanyaan SQL.
Sokong pengaturcaraan modular
Fungsi ini boleh dibuat sekali, disimpan dalam pangkalan data, dan kemudian digunakan seberapa banyak kali dalam perisian yang anda perlukan. Fungsi yang ditentukan pengguna boleh ditukar tanpa mengubah kod sumber aplikasi.
Mereka mempercepatkan pelaksanaan
Fungsi yang ditakrifkan pengguna Transact-SQL (seperti prosedur tersimpan) mengurangkan kos penyusunan dengan menyimpan cache pelan dan menggunakannya semula merentas pelbagai pelaksanaan. Oleh kerana fungsi yang ditentukan pengguna tidak perlu dipulihkan dan dioptimumkan setiap kali ia digunakan, masa pelaksanaan dikurangkan dengan ketara.
Untuk beban kerja pengiraan, logik perniagaan dan operasi rentetan, fungsi CLR berfungsi dengan lebih baik daripada fungsi Transact-SQL. Logik intensif akses data lebih sesuai untuk operasi Transact-SQL.
Mereka mungkin mengurangkan aktiviti rangkaian.
Fungsi boleh digunakan untuk mewakili operasi yang menapis maklumat berdasarkan kekangan kompleks yang tidak boleh diwakili oleh satu ungkapan angka. Untuk mengurangkan bilangan baris yang disampaikan kepada klien, fungsi ini boleh digunakan dalam klausa WHERE.
Jadual berikut menyerlahkan perbezaan utama antara fungsi yang ditentukan pengguna dan prosedur tersimpan dalam SQL -
Standard |
Fungsi yang ditetapkan pengguna |
Prosedur Tersimpan |
---|---|---|
nilai pulangan |
Nilai tunggal |
Tunggal, berbilang malah sifar |
Parameter |
Masukkan nilai |
Nilai input dan output |
Pangkalan data |
Tidak boleh diubah suai |
boleh diubah suai |
Kenyataan |
PILIH kenyataan sahaja |
PILIH dan penyata DML |
Panggil |
Panggilan dari prosedur |
tidak boleh dipanggil dari fungsi |
Susun dan laksanakan |
Perlu compile setiap masa |
Hanya susun sekali |
Pengurusan Transaksi |
Mustahil |
Mustahil |
Dalam artikel ini, kami membincangkan secara mendalam tentang prosedur tersimpan dan kelebihannya, fungsi, jenis fungsi dan kelebihan fungsi dan akhirnya disimpulkan dengan perbezaan antara fungsi dan prosedur tersimpan.
Atas ialah kandungan terperinci Tulis fungsi dan prosedur tersimpan dalam SQL Server. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!