1 Ini juga merupakan metode paling sederhana, dengan dua parameter masukan dan tanpa nilai kembalian:
atur koneksi = server.buat objek(adodb.koneksi)
koneksi.buka beberapaDSN
Koneksi.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.buat objek(adodb.koneksi)
koneksi.buka beberapaDSN
set rs = server.createobject(adodb.recordset)
rs.Open Exec nama proc 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:
menggunakan pub
PERGI
-- Membuat prosedur tersimpan
buat prosedur sp_PubsTest
--Tentukan tiga variabel parameter. Perhatikan bahwa variabel ketiga ditandai khusus untuk keluaran.
@au_lname varchar (20),
@intID ke dalam,
@intIDOut ke KELUARAN
SEBAGAI
PILIH @intIDOut = @intID + 1
PILIH *
DARI penulis
DIMANA au_lname SEPERTI @au_lname + '%'
--Kembalikan nilai secara langsung
KEMBALI @intID + 2
Program asp yang memanggil prosedur tersimpan ini adalah sebagai berikut:
<%@ Bahasa=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
bulat telur = 3
'Buat objek perintah
set CmdSP = Server.CreateObject(ADODB.Command)
'Buat tautan
CmdSP.ActiveConnection = Driver={SQL Server};server=(lokal);Uid=sa;Pwd=;Database=Pubs
'Tentukan nama panggilan objek perintah
CmdSP.CommandText = sp_PubsTest
'Atur jenis panggilan perintah menjadi prosedur tersimpan (adCmdSPStoredProc = 4)
CmdSP.CommandType = iklanCmdSPStoredProc
'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.Tambahkan 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.
Meskipun Tidak adoRS.EOF
untuk setiap adoField di adoRS.Fields
Respon.Tulis adoField.Name & = & adoField.Value & <br> & vbCRLF
Berikutnya
Respon.Tulis<br>
adoRS.MoveNext
Pergi ke
'Cetak dua nilai keluaran:
Respon.Tulis <p>@intIDOut = & CmdSP.Parameters(@intIDOut).Nilai & </p>
Response.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
%>
Ada juga cara lain yang sedikit lebih bias, dan kita akan membicarakannya nanti.
Artikel ini mengacu pada banyak artikel, yang tidak tercantum di sini.