Beberapa cara ASP memanggil prosedur tersimpan dengan parameter.
Baru-baru ini banyak teman yang bertanya tentang memanggil prosedur tersimpan. Berikut adalah pengenalan singkat beberapa cara ASP memanggil prosedur tersimpan dengan parameter.
1. Ini juga merupakan metode paling sederhana, dengan dua parameter masukan dan tanpa nilai kembalian:
atur koneksi = server.createobject("adodb.koneksi")
koneksi.buka beberapaDSN
Connection.Jalankan "procname varvalue1, varvalue2"
'Hapus semua objek dan lepaskan sumber daya
koneksi.tutup
atur koneksi=tidak ada
2. Jika Anda ingin mengembalikan kumpulan Recordset:
atur koneksi = server.createobject("adodb.koneksi")
koneksi.buka beberapaDSN
set rs = server.createobject("adodb.recordset")
rs.Buka "Exec procname varvalue1, varvalue2",koneksi
'Hapus semua objek dan lepaskan sumber daya
rs.tutup
koneksi.tutup
setr=tidak ada
atur koneksi=tidak ada
3. Tak satu pun dari dua metode di atas dapat memiliki nilai kembalian (kecuali Recordset). Jika Anda ingin mendapatkan nilai kembalian, Anda perlu menggunakan metode Perintah.
Pertama-tama, ada dua jenis nilai kembalian. Salah satunya adalah mengembalikan nilai secara langsung dalam prosedur tersimpan, seperti fungsi mengembalikan nilai C dan VB; yang lainnya adalah mengembalikan beberapa nilai, dan nama variabel untuk menyimpan nilai-nilai ini harus ditentukan dalam parameter pemanggilan terlebih dahulu .
Contoh ini perlu menangani beberapa parameter, parameter masukan, parameter keluaran, kumpulan catatan pengembalian, dan nilai pengembalian langsung (apakah cukup lengkap?)
Prosedur tersimpannya adalah sebagai berikut:
gunakan pub
GO
-- Membuat prosedur tersimpan
buat prosedur sp_PubsTest
-- tentukan tiga variabel parameter, perhatikan yang ketiga, tanda khusus untuk keluaran
@au_lname varchar (20),
@intID ke dalam,
@intIDOut int OUTPUT
SEBAGAI
PILIH @intIDOut = @intID + 1
PILIH *
DARI penulis
WHERE au_lname LIKE @au_lname + '%'
--Mengembalikan nilai secara langsung
KEMBALI @intID + 2
Program asp yang memanggil prosedur tersimpan ini adalah sebagai berikut:
<%@ Language=VBScript %>
<%
Redupkan CmdSP
DimadoRS
Redupkan iklanCmdSPStoredProc
Redupkan adParamReturnValue
Redupkan adParaminput
Redupkan keluaran Param iklan
Redupkan bilangan bulat iklan
Redupkan iVal
Redupkan oval
Redupkan adoField
Redupkan adVarChar
'Nilai-nilai ini adalah konstanta yang telah ditentukan sebelumnya di VB dan dapat dipanggil secara langsung, tetapi tidak ditentukan sebelumnya di VBScript
iklanCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
keluaranParamiklan = 2
bilangan bulat iklan = 3
adVarChar = 200
iVal = 5
oVal = 3
'Buat objek perintah
set CmdSP = Server.CreateObject("ADODB.Command")
'Buat tautan
CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"
'Tentukan nama panggilan objek perintah
CmdSP.CommandText = "sp_PubsTest"
'Atur jenis pemanggilan perintah menjadi prosedur tersimpan (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc
'Tambahkan parameter ke objek perintah
'Tentukan prosedur tersimpan untuk memiliki nilai pengembalian langsung, dan itu adalah bilangan bulat
CmdSP.Parameters.Tambahkan CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
'Tentukan parameter masukan karakter
CmdSP.Parameters.Tambahkan CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
'Tentukan parameter masukan bilangan bulat
CmdSP.Parameters.Tambahkan CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
'Tentukan parameter keluaran bilangan bulat
CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)
'Jalankan prosedur tersimpan dan dapatkan kumpulan data yang dikembalikan
Setel adoRS = CmdSP.Jalankan
'Cetak setiap catatan. Bidangnya bersifat virtual dan dapat diabaikan.
Sedangkan Bukan adoRS.EOF
untuk setiap adoField di adoRS.Fields
Respon.Tulis adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF
Berikutnya
Respon.Tulis "<br>"
adoRS.MoveNext
Wend
'Cetak dua nilai keluaran:
Respon.Tulis "<p>@intIDOut = " & CmdSP.Parameters("@intIDOut").Nilai & "</p>"
Respon.Tulis "<p>Nilai pengembalian = " & CmdSP.Parameters("RETURN_VALUE").Nilai & "</p>"
'Pembersihan umum
Setel adoRS = tidak ada
Setel CmdSP.ActiveConnection = tidak ada
Setel CmdSP = tidak ada
%>
--------------------------------------------------- --------------------------------------------------- --------------------------------
Memanggil prosedur tersimpan sql server di asp dapat mempercepat kecepatan berjalannya program
1. Panggil penyimpanan Metode umum proses ini mengasumsikan bahwa ada prosedur tersimpan dt_users di sql server:
BUAT PROSEDUR [dbo].[dt_users]
SEBAGAI
pilih * dari pengguna
kembali
PERGI
Cara pertama bukan dengan menggunakan objek perintah, melainkan langsung menggunakan objek recordset.
set rs=server.createobject("adodb.recordset")
sql="eksekutif dt_users"
rs.open sql,conn,1,1 sehingga cara yang kedua adalah dengan menggunakan objek perintah
setel comm=server.createobject("adodb.command")
com.commantype=4
atur comm.activeconnection=sambungan
comm.commandtext="dbo.dt_users"
set rs=server.createobject("adodb.recordset")
rs.open comm,,1,1
2. Meneruskan parameter ke prosedur tersimpan. Jika tidak ada parameter dalam prosedur tersimpan, kecuali satu pernyataan SQL, keuntungan memanggil prosedur tersimpan tidak akan ditampilkan!
Misalnya, untuk kueri bbs, Anda dapat melakukan kueri berdasarkan penulis dan topik! Kemudian Anda dapat membuat prosedur tersimpan sebagai berikut:
Kata kunci parameter adalah kata kuncinya, dan pilih adalah metode pemilihan kueri.
BUAT PROSEDUR [dbo].[dt_bbs]
@kata kunci varchar(20)=batal,
@pilih int=null
sebagai
jika @pilih=1
pilih * dari bbs yang namanya seperti @kata kunci
kalau tidak
pilih * dari bbs dengan subjek seperti @kata kunci
kembali
pergi
Dengan cara ini, saat kita memanggil prosedur tersimpan, kita hanya perlu meneruskan parameternya, alih-alih menulis program dalam asp dan menggunakan metode pertama:
set rs=server.createobject("adodb.recordset")
sql="exec dt_bbs '"&kata kunci&"',"&pilih&""
rs.open sql,sambungan,1,1
Gunakan cara kedua:
setel comm=server.createobject("adodb.command")
com.commantype=4
comm.Parameters.tambahkan comm.CreateParameter("@kata kunci",adChar,adParamInput,50,kata kunci)
comm.Parameters.append comm.CreateParameter("@keyword",adInteger,adParamInput,,pilih)
atur comm.activeconnection=sambungan
comm.commandtext="dbo.dt_bbs"
set rs=server.createobject("adodb.recordset")
rs.Tipe Kursor=3
rs.open komunikasi,,1,1