Apa itu prosedur tersimpan?
definisi:
Tulis tugas yang umum digunakan atau sangat kompleks terlebih dahulu dengan pernyataan SQL dan simpan dengan nama tertentu. Kemudian ketika Anda ingin meminta database untuk menyediakan layanan dengan fungsi yang sama seperti prosedur tersimpan yang ditentukan di masa mendatang, Anda hanya perlu memanggil eksekusi. .
Pada titik ini, seseorang mungkin bertanya: Jadi prosedur tersimpan hanyalah sekumpulan pernyataan SQL?
Mengapa Microsoft ingin menambahkan teknologi ini?
Jadi apa perbedaan antara prosedur tersimpan dan pernyataan SQL biasa?
Keuntungan dari prosedur tersimpan:
1. Prosedur tersimpan hanya dikompilasi saat dibuat. Tidak perlu mengkompilasi ulang setiap kali prosedur tersimpan dijalankan di masa mendatang. Umumnya, pernyataan SQL dikompilasi sekali setiap kali dijalankan, sehingga penggunaan prosedur tersimpan dapat meningkatkan eksekusi kecepatan basis data.
2. Saat melakukan operasi kompleks pada database (seperti Update, Insert, Query, Delete pada beberapa tabel), operasi kompleks ini dapat diringkas dalam prosedur tersimpan dan digunakan bersama dengan pemrosesan transaksi yang disediakan oleh database.
3. Prosedur tersimpan dapat digunakan kembali, sehingga dapat mengurangi beban kerja pengembang database
4. Keamanan tinggi, Anda dapat mengatur bahwa hanya pengguna tertentu yang berhak menggunakan proses tersimpan yang ditentukan
Jenis prosedur tersimpan:
1. Prosedur tersimpan sistem: dimulai dengan sp_, digunakan untuk mengatur sistem, memperoleh informasi, dan pekerjaan manajemen terkait, seperti sp_help, yang digunakan untuk memperoleh informasi relevan tentang objek tertentu.
2. Prosedur tersimpan yang diperluas dimulai dengan XP_ dan digunakan untuk memanggil fungsi yang disediakan oleh sistem operasi.
exec master..xp_cmdshell 'ping 10.8.16.1'
3. Prosedur tersimpan yang ditentukan pengguna, inilah yang kami sebut sebagai prosedur tersimpan
Format umum
Buat prosedur procedure_name
[@parameter data_type][keluaran]
[dengan]{kompilasi ulang|enkripsi}
sebagai
ql_pernyataan
menjelaskan:
output: menunjukkan bahwa parameter ini dapat dikembalikan
dengan {kompilasi ulang|enkripsi}
kompilasi ulang: berarti prosedur tersimpan ini akan dikompilasi ulang setiap kali dijalankan.
enkripsi: Konten prosedur tersimpan yang dibuat akan dienkripsi
menyukai:
Isi buku tabel adalah sebagai berikut
Harga judul buku bernomor
001 Pengantar bahasa C$30
Pengembangan laporan PowerBuilder 002$52
Contoh 1: Prosedur tersimpan untuk menanyakan isi tabel Buku
buat proc query_book
sebagai
pilih * dari buku
pergi
eksekutif query_book
Contoh 2: Tambahkan catatan ke buku tabel dan kueri jumlah total semua buku di tabel ini
Buat proses insert_book
@param1 char(10),@param2 varchar(20),@param3 uang,@param4 keluaran uang
dengan enkripsi ---------- enkripsi
sebagai
masukkan buku(nomor, judul buku, harga) Nilai(@param1,@param2,@param3)
pilih @param4=jumlah(harga) dari buku
pergi
Contoh eksekusi:
nyatakan @total_price uang
exec insert_book '003','Panduan Pengembangan Kontrol Delphi',$100,@total_price
print 'Jumlah totalnya adalah'+convert(varchar,@total_price)
pergi
Tiga jenis nilai kembalian dari prosedur tersimpan:
1. Kembalikan bilangan bulat dengan Return
2. Kembalikan parameter dalam format output
3. Kumpulan Rekaman
Perbedaan antara nilai yang dikembalikan:
Baik keluaran maupun pengembalian dapat diterima sebagai variabel dalam program batch, dan kumpulan data diteruskan kembali ke klien yang menjalankan kumpulan tersebut.
Contoh 3: Terdapat dua tabel, Produk dan Pesanan, dengan isi tabel sebagai berikut:
Produk
Nomor produk Nama produk Jumlah pesanan pelanggan
001 pena 30
002 kuas 50
003 Pensil 100
Memesan
Nomor Produk Nama Pelanggan Setoran Pelanggan
001 Distrik Nanshan$30
002 Distrik Luohu$50
003 Distrik Baoan$4
Silakan gunakan nomor sebagai syarat koneksi untuk menghubungkan kedua tabel menjadi tabel sementara. Tabel ini hanya berisi nomor Nama Produk.
Jumlah total = deposit * jumlah pesanan, tabel sementara ditempatkan dalam proses penyimpanan
Kodenya adalah sebagai berikut:
Buat proses temp_sale
sebagai
pilih a.Nomor produk,a.Nama produk,b.Nama pelanggan,b.Setoran pelanggan,a.Jumlah pesanan pelanggan* b.Setoran pelanggan sebagai jumlah total
menjadi #temptable dari Produk a gabungan dalam Pesanan b pada a.nomor produk=b.nomor produk
jika @@kesalahan=0
cetak 'Bagus'
kalau tidak
cetak 'Gagal'