Direkomendasikan: Asp 3.0 Advanced Programming (Dua Belas) 4.2.3 Contoh instruksi yang berisi sisi-server bagian ini memberikan beberapa halaman contoh yang dapat digunakan untuk bereksperimen dengan berbagai pernyataan yang berisi sisi server. Buka subdirektori Halaman Web Sampel Bab 04, Menampilkan Arahan SSI dan Objek & RDQU Server ASP
9.2.3 Prosedur tersimpanPenggunaan prosedur tersimpan adalah area di mana objek perintah diterapkan. Prosedur tersimpan (kadang -kadang disebut kueri penyimpanan) adalah pernyataan kueri SQL yang telah ditentukan sebelumnya dalam database.
Mengapa Anda harus membuat dan menggunakan prosedur tersimpan alih -alih menggunakan string SQL secara langsung dalam kode Anda? Ada beberapa alasan utama:
· Prosedur tersimpan telah dikompilasi oleh database. Ini menghasilkan rencana eksekusi, sehingga database tahu persis apa yang akan dilakukannya, sehingga mempercepat eksekusi proses.
Prosedur tersimpan biasanya di -cache oleh database, yang membuat mereka berjalan lebih cepat karena mereka tidak diharuskan dibaca dari disk saat ini. Tidak semua database mendukung mekanisme caching ini. Misalnya, akses Microsoft tidak mendukungnya, tetapi SQL Server mendukungnya.
· Dengan menentukan bahwa tabel dalam database hanya dapat dimodifikasi dengan prosedur tersimpan, data dapat dipastikan lebih aman. Ini berarti bahwa operasi SQL yang berpotensi berbahaya tidak akan dilakukan.
· Kode ASP dapat dihindari pencampuran bersama dengan pernyataan SQL yang panjang, membuat kode ASP lebih mudah dipelihara.
· Semua kode SQL dapat disimpan secara terpusat di server.
· Parameter output dapat digunakan dalam prosedur tersimpan untuk memungkinkan pengembalian set catatan atau nilai lainnya.
Secara umum, prosedur tersimpan hampir selalu lebih cepat daripada pernyataan SQL yang sebanding.
Untuk menggunakan prosedur tersimpan, cukup gunakan nama prosedur tersimpan sebagai teks perintah dan atur tipe yang sesuai. Misalnya, pertimbangkan contoh sebelumnya dari harga buku yang diperbarui. Jika Anda membuat prosedur tersimpan di SQL Server, Anda dapat menulis kode:
Buat Prosedur USP_UPDATEPRICE
SEBAGAI
Perbarui judul
Setel harga = harga * 1.10
Dimana tipe = 'bisnis'
Untuk database Access Microsoft, tugas yang sama dapat diselesaikan dengan menggunakan pernyataan kueri pembaruan sederhana
Untuk menjalankan prosedur tersimpan ini di halaman web ASP, cukup gunakan kode berikut:
Setel cmdupdate = server.CreateObject (adodb.command)
cmdupdate.activeConnection = strconn
cmdupdate.CommandText = usp_updatePrices
cmdupdate.CommandType = ADCMDStoredProc
cmdupdate.execute ,, adexecutenorecords
Ini hanya menjalankan prosedur tersimpan. Tidak ada rekor set pengembalian karena data baru saja diperbarui. Penting untuk diingat bahwa Anda tidak membuat rekaman kecuali Anda benar -benar membutuhkannya.
Meskipun ini OK, itu tidak terlalu fleksibel, karena hanya berurusan dengan satu jenis buku. Pendekatan yang lebih baik adalah membuat proses yang memungkinkan kami memilih jenis buku sehingga kami tidak perlu membuat proses untuk setiap jenis buku. Juga, pembaruan 10% tetap dapat dihapus, yang membuat fleksibilitas yang lebih baik. Jadi, bagaimana saya bisa melakukan ini? Sangat sederhana, gunakan parameter.
1. Parameter
Parameter (atau variabel) dari prosedur tersimpan sama dengan prosedur dan fungsi umum. Mereka dapat diteruskan ke fungsi, dan fungsi kemudian dapat menggunakan nilainya. Prosedur tersimpan di SQL Server (hal yang sama berlaku untuk database lain, termasuk akses) memiliki fungsi ini.
Agar prosedur tersimpan menangani beberapa jenis buku, dan bahkan memungkinkan pengguna untuk menentukan kenaikan (atau penurunan) harga, beberapa parameter perlu ditambahkan:
Buat Prosedur USP_UPDATEPRICE
@Type char (12),
Uang @percent
SEBAGAI
Perbarui judul
Setel Harga = Harga * (1 @percent / 100)
Dimana type = @type
Sekarang, prosedur tersimpan usp_updatePrices mengambil dua parameter:
· Satu adalah jenis buku (@Type).
· Satu adalah persentase dari perubahan harga buku (@percent).
Seperti fungsi VBScript, parameter ini adalah variabel. Namun, tidak seperti VBScript dan bahasa skrip lainnya, variabel dalam bahasa skrip ini adalah semua jenis variabel, sedangkan variabel SQL memiliki tipe yang pasti (char, uang, dll.). Spesifikasi penamaan variabel SQL harus diikuti, yaitu, variabel harus dimulai dengan simbol @.
Perhatikan bahwa kami memiliki persentase yang disahkan ke dalam proses ini sebagai bilangan bulat (seperti 10 berarti 10%) alih -alih sebagai nilai fraksional. Ini hanya membuat prosedur tersimpan sedikit lebih intuitif.
2. Koleksi Parameter
Jadi, sekarang ada prosedur tersimpan dengan parameter, tetapi bagaimana Anda menyebutnya melalui ADO? Kami telah melihat cara memanggil prosedur tersimpan tanpa parameter dengan objek perintah, dan pada kenyataannya, tidak ada perbedaan di antara mereka. Perbedaannya adalah penggunaan koleksi parameter.
Koleksi parameter berisi objek parameter untuk setiap parameter dalam prosedur tersimpan. Namun, ADO tidak secara otomatis tahu apa parameter ini, sehingga mereka harus dibuat menggunakan metode createParameter, dalam bentuk berikut:
Set parameter = command.createParameter (name, [type], [Direction], [size], [value])
Parameter dan deskripsi ditampilkan pada Tabel 9-3:
Tabel 9-3 Parameter dan Deskripsi Metode CreateParameter
parameter
menjelaskan
Nama
Nama Parameter. Ini adalah nama parameter dalam koleksi parameter, bukan nama parameter dalam prosedur tersimpan. Namun, menggunakan nama yang sama adalah praktik yang baik
Jenis
Tipe data parameter. Ini bisa berupa konstanta addatatype, lihat lampiran untuk detailnya
Arah
Arah parameter menunjukkan apakah parameter memberikan informasi ke prosedur tersimpan atau prosedur tersimpan mengembalikan informasi ke ADO. Ini bisa menjadi salah satu nilai berikut:
Adparaminput, parameter adalah parameter input yang diteruskan ke prosedur tersimpan
ADPARAMOUTPUT, parameter adalah parameter output yang diambil dari prosedur tersimpan
ADParaminPutOutput, parameter dapat digunakan sebagai parameter input dan output
AdparamReturnValue, parameter ini berisi status yang dikembalikan oleh prosedur tersimpan
Ukuran
Panjang parameter. Untuk tipe panjang tetap, seperti bilangan bulat, nilai ini dapat diabaikan
Nilai
Nilai parameter
Setelah parameter dibuat, itu dapat ditambahkan ke koleksi parameter, misalnya:
Setel parvalue = cmdupdate.createParameter (@type, advarwchar, adparaminput, _
12, bisnis)
cmdupdate.parameters. Laporan parvalue
Setel parvalue = cmdupdate.createParameter (@percent, adcurrency, _
adparaminput ,, 10)
cmdupdate.parameters. Laporan parvalue
Tidak perlu secara eksplisit membuat objek untuk menyimpan parameter, tipe varian default sudah dapat bekerja dengan cukup baik. Jika Anda tidak ingin membuat variabel, Anda juga dapat mengambil jalan pintas, seperti kode berikut:
cmdupdate.parameters.append = _
cmdupdate.createParameter (@percent, adcurrency, adparaminput ,, 10)
Ini menggunakan metode createParameter untuk mengembalikan objek parameter dan menerimanya dengan metode append. Metode ini berjalan lebih cepat daripada menggunakan variabel, tetapi memperpanjang garis kode, membuatnya kurang mudah dibaca. Anda dapat memilih salah satu metode ini sesuai dengan hobi Anda.
Setelah parameter ditambahkan ke koleksi parameter, mereka disimpan di dalamnya, sehingga setiap parameter tidak harus diberi nilai ketika parameter dibuat. Nilai parameter dapat diatur kapan saja sebelum perintah dijalankan. Misalnya:
cmdupdate.parameters.append = _
cmdupdate.createParameter (@percent, adcurrency, adparaminput)
cmdupdate.parameters (@percent) = 10
Bab sebelumnya menyebutkan bahwa ada beberapa cara untuk mengakses nilai dalam koleksi, dan koleksi parameter tidak berbeda. Contoh di atas menggunakan nama parameter untuk mengambil parameter dalam set, atau juga dapat dicari menggunakan nomor indeks:
cmdupdate.parameters (0) = 10
Kode di atas menetapkan parameter pertama dalam set parameter (set parameter bernomor dari 0)
Bagikan: Pengetahuan Terkait tentang Objek Kesalahan ASP Lanjutan untuk Aplikasi ASP Dalam VBScript, ada pernyataan OnerRorresumexExt yang menyebabkan penerjemah skrip mengabaikan kesalahan runtime dan melanjutkan eksekusi kode skrip. Kemudian skrip dapat memeriksa nilai properti err.number untuk menentukan apakah kesalahan terjadi. Jika kesalahan terjadi, nilai tidak nol dikembalikan