1 นี่เป็นวิธีที่ง่ายที่สุดเช่นกัน โดยมีพารามิเตอร์อินพุตสองตัวและไม่มีค่าส่งคืน:
ตั้งค่าการเชื่อมต่อ = server.createobject (adodb.connection)
การเชื่อมต่อ เปิด DSN บางส่วน
การเชื่อมต่อดำเนินการ procname varvalue1, varvalue2
'ล้างวัตถุทั้งหมดให้เหลืออะไรและปล่อยทรัพยากร
การเชื่อมต่อ.ปิด
ตั้งค่าการเชื่อมต่อ=ไม่มีอะไร
2 หากคุณต้องการคืนชุดระเบียน:
ตั้งค่าการเชื่อมต่อ = server.createobject (adodb.connection)
การเชื่อมต่อ เปิด DSN บางส่วน
ชุด rs = server.createobject (adodb.recordset)
rs.Open Exec procname varvalue1, varvalue2,การเชื่อมต่อ
'ล้างวัตถุทั้งหมดให้เหลืออะไรและปล่อยทรัพยากร
RS.ปิด
การเชื่อมต่อ.ปิด
setrs=ไม่มีอะไร
ตั้งค่าการเชื่อมต่อ=ไม่มีอะไร
3 ทั้งสองวิธีข้างต้นไม่สามารถมีค่าส่งคืนได้ (ยกเว้น Recordset) หากคุณต้องการรับค่าส่งคืน คุณต้องใช้วิธี Command
ประการแรก มีค่าส่งคืนสองประเภท วิธีหนึ่งคือการส่งคืนค่าโดยตรงในกระบวนงานที่เก็บไว้ เช่นเดียวกับค่าส่งคืนฟังก์ชันของ C และ VB อีกอย่างคือการส่งคืนค่าหลายค่า และต้องระบุชื่อตัวแปรเพื่อจัดเก็บค่าเหล่านี้ในพารามิเตอร์การเรียกก่อน .
ตัวอย่างนี้ต้องจัดการกับพารามิเตอร์หลายตัว พารามิเตอร์อินพุต พารามิเตอร์เอาต์พุต ชุดบันทึกส่งคืน และค่าส่งคืนโดยตรง (สมบูรณ์เพียงพอหรือไม่)
ขั้นตอนการจัดเก็บมีดังนี้:
ใช้ผับ
ไป
- สร้างขั้นตอนการจัดเก็บ
สร้างขั้นตอน sp_PubsTest
--กำหนดตัวแปรพารามิเตอร์สามตัว โปรดทราบว่าตัวแปรตัวที่สามถูกทำเครื่องหมายไว้เป็นพิเศษสำหรับเอาต์พุต
@au_lname วาร์ชาร์ (20),
@intID อินท์
@intIDOut int เอาท์พุต
เช่น
เลือก @intIDOut = @intID + 1
เลือก *
จากผู้เขียน
โดยที่ au_lname ชอบ @au_lname + '%'
--ส่งกลับค่าโดยตรง
กลับ @intID + 2
โปรแกรม asp ที่เรียกกระบวนงานที่เก็บไว้นี้จะเป็นดังนี้:
<%@ ภาษา=VBScript %>
-
Dim CmdSP
ดิมาโดรเอส
หรี่ adCmdSPStoredProc
Dim adParamReturnValue
ดิมแอดพารามินพุต
Dim adParamOutput
Dim adInteger
ดิม ไอวาล
ดิมโอวัล
ลืมไปฟิลด์
ติ่ม adVarChar
'ค่าเหล่านี้เป็นค่าคงที่ที่กำหนดไว้ล่วงหน้าใน VB และสามารถเรียกได้โดยตรง แต่ไม่ได้กำหนดไว้ล่วงหน้าใน VBScript
adCmdSPStoredProc = 4
adParamReturnValue = 4
โฆษณาพารามินพุต = 1
adParamOutput = 2
จำนวนเต็มโฆษณา = 3
แอดวาร์ชาร์ = 200
iVal = 5
โอวัล = 3
'สร้างวัตถุคำสั่ง
ตั้ง CmdSP = Server.CreateObject (ADODB.Command)
'สร้างลิงค์
CmdSP.ActiveConnection = ไดรเวอร์ = {SQL Server}; เซิร์ฟเวอร์ = (ภายในเครื่อง); Uid = sa; Pwd =; ฐานข้อมูล = Pubs
'กำหนดชื่อการเรียกวัตถุคำสั่ง
CmdSP.CommandText = sp_PubsTest
'ตั้งค่าประเภทการเรียกคำสั่งให้เป็นขั้นตอนการจัดเก็บ (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc
'เพิ่มพารามิเตอร์ให้กับออบเจ็กต์คำสั่ง'
'กำหนดขั้นตอนการจัดเก็บให้มีค่าตอบแทนโดยตรงและเป็นจำนวนเต็มค่าเริ่มต้นคือ 4
CmdSP.Parameters.Append CmdSP.CreateParameter(RETURN_VALUE, adInteger, adParamReturnValue, 4)
'กำหนดพารามิเตอร์อินพุตอักขระ
CmdSP.Parameters.Append CmdSP.CreateParameter(@au_lname, adVarChar, adParaminput, 20, M)
'กำหนดพารามิเตอร์อินพุตจำนวนเต็ม
CmdSP.Parameters.Append CmdSP.CreateParameter(@intID, adInteger, adParamInput, , iVal)
'กำหนดพารามิเตอร์เอาต์พุตจำนวนเต็ม
CmdSP.Parameters.Append CmdSP.CreateParameter(@intIDOut, adInteger, adParamOutput, oVal)
'เรียกใช้กระบวนงานที่เก็บไว้และรับชุดระเบียนที่ส่งคืน
ตั้งค่า adoRS = CmdSP.Execute
'พิมพ์แต่ละระเบียนออกมา ฟิลด์เหล่านี้เป็นเสมือนและสามารถละเว้นได้
ในขณะที่ไม่ adoRS.EOF
สำหรับแต่ละ adoField ใน adoRS.Fields
การตอบกลับเขียน adoField.Name & = & adoField.Value & <br> & vbCRLF
ต่อไป
การตอบสนองเขียน<br>
adoRS.MoveNext
เวนด์
'พิมพ์ค่าเอาต์พุตสองค่า:
Response.Write <p>@intIDOut = & CmdSP.Parameters(@intIDOut).Value & </p>
Response.Write <p>ค่าส่งกลับ = & CmdSP.Parameters(RETURN_VALUE).Value & </p>
'ทำความสะอาดทั่วไป
ตั้งค่า AdRS = ไม่มีเลย
ตั้งค่า CmdSP.ActiveConnection = ไม่มีเลย
ตั้งค่า CmdSP = ไม่มีเลย
-
ยังมีวิธีอื่นซึ่งมีอคติมากกว่านี้อีกเล็กน้อย และเราจะพูดถึงมันในภายหลัง
บทความนี้อ้างอิงถึงบทความจำนวนมากซึ่งไม่ได้ระบุไว้ที่นี่