Rumah  >  Artikel  >  pangkalan data  >  Tulis fungsi dan prosedur tersimpan dalam SQL Server

Tulis fungsi dan prosedur tersimpan dalam SQL Server

王林
王林ke hadapan
2023-09-16 15:13:02627semak imbas

在 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 -

Prosedur tersimpan dalam SQL

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.

Kelebihan prosedur tersimpan

Kompil dan laksanakan

Setiap prosedur tersimpan disusun sekali oleh SQL Server dan kemudian pelan pelaksanaan digunakan semula. Apabila memanggil prosedur tersimpan dengan kerap, peningkatan prestasi adalah besar.

Pengurangan trafik pelanggan/pelayan

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.

Penggunaan semula kod dan pengaturcaraan pengaturcaraan yang cekap

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.

Langkah keselamatan yang dipertingkatkan

Berkecuali daripada kebenaran pada jadual asas, anda boleh memberikan pengguna akses untuk menjalankan prosedur tersimpan.

Fungsi dalam SQL

SQL Server menyokong dua jenis fungsi

Fungsi terbina dalam

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

Fungsi skalar

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;

Output

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 agregat sistem

Fungsi ini mengembalikan nilai tunggal, fungsi ini mengambil koleksi argumen input. Contohnya termasuk -

Avg() akan memberikan nilai purata untuk semua input yang disediakan.

Contoh

SELECT AVG(MARKS) FROM Students;

Output

80

Count() Fungsi ini akan mengembalikan bilangan baris yang memenuhi syarat yang diberikan.

Contoh

SELECT COUNT(*) FROM Students;

Output

5

Max() dan min() Fungsi max() dan min() akan mengembalikan nilai tertinggi dan terendah antara argumen yang dibekalkan.

Contoh

SELECT MAX(AGE) FROM Students

Output

21

Contoh

SELECT MIN(AGE) FROM Students;

Output

18

Fungsi yang ditentukan pengguna

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.

Operasi skalar

Fungsi skalar yang ditentukan pengguna mengeluarkan nilai untuk setiap langkah operasi fungsi. Mengembalikan sebarang nilai jenis data dalam fungsi.

Fungsi bernilai jadual

Fungsi sebaris

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.

Fungsi berbilang kenyataan

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.

Kelebihan fungsi yang ditentukan pengguna

  • 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.

Perbezaan antara fungsi yang ditentukan pengguna dan prosedur tersimpan

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

Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam