เรามักจะไตร่ตรองปัญหาบางอย่างเมื่อเราเรียนรู้ ASP เพื่อเรียกขั้นตอนที่เก็บไว้หรือไม่? ตัวอย่างเช่นวิธีการใช้วิธีการเรียกขั้นตอนการจัดเก็บ พารามิเตอร์ที่ส่งผ่านไปยังขั้นตอนที่เก็บไว้ ฯลฯ คืออะไรในวันนี้ช่องทางเทคโนโลยีใหม่ของข้อผิดพลาดจะนำคุณไปยังบทความต่อไปนี้เพื่อเรียนรู้ความรู้เหล่านี้ ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของคุณ!
1. วิธีการทั่วไปของการโทรขั้นตอนที่เก็บไว้
ก่อนอื่นสมมติว่ามีขั้นตอนที่เก็บไว้ dt_users ในเซิร์ฟเวอร์ SQL:
สร้างขั้นตอน [DBO]. [DT_USERS]
เช่น
เลือก * จากผู้ใช้
กลับ
ไป
วิธีแรกคือการใช้วัตถุ RecordSet โดยไม่ต้องใช้วัตถุคำสั่ง
ตั้งค่า rs = server.createObject ("adodb.recordset"))
sql = "exec dt_users"
Rs.Open SQL, Conn, 1,1
วิธีที่สองคือการใช้วัตถุคำสั่ง
ตั้งค่า comm = server.createObject ("AdoDB.Command"))
Comm.Commantype = 4
ตั้งค่า comm.activeConnection = conn
comm.commandtext = "dbo.dt_users"
ตั้งค่า rs = server.createObject ("adodb.recordset"))
Rs.Open Comm ,, 1,1
2. พารามิเตอร์ผ่านไปยังขั้นตอนที่เก็บไว้
หากไม่มีพารามิเตอร์ในขั้นตอนที่เก็บไว้ แต่คำสั่ง SQL เดียวข้อดีของการโทรขั้นตอนการโทรไม่สามารถแสดงได้!
ตัวอย่างเช่นการสืบค้น BBS สามารถสอบถามได้โดยผู้แต่งและหัวข้อ! จากนั้นขั้นตอนที่เก็บไว้สามารถสร้างได้ดังนี้:
คำหลักของพารามิเตอร์คือคำหลักและเลือกเป็นวิธีการเลือกแบบสอบถาม
สร้างขั้นตอน [DBO]. [DT_BBS]
@keyword varchar (20) = null,
@Choose int = null
เช่น
ถ้า @เลือก = 1
เลือก * จาก bbs ที่ชื่อ @keyword
อื่น
เลือก * จาก bbs ที่มีหัวข้อ @keyword
กลับ
ไป
ด้วยวิธีนี้เมื่อเราเรียกขั้นตอนที่เก็บไว้เราเพียงแค่ต้องผ่านพารามิเตอร์ไปและละเว้นการเขียนโปรแกรมใน ASP
ใช้วิธีแรก:
ตั้งค่า rs = server.createObject ("adodb.recordset"))
SQL = "EXEC DT_BBS '" & คำหลัก & "'," & เลือก & ""
Rs.Open SQL, Conn, 1,1
ใช้วิธีที่สอง:
ตั้งค่า comm = server.createObject ("AdoDB.Command"))
Comm.Commantype = 4
comm.parameters.append comm.createparameter ("@keyword", adchar, adparaminput, 50, คีย์เวิร์ด)
comm.parameters.append comm.createparameter ("@keyword", adinteger, adparaminput ,, เลือก)
ตั้งค่า comm.activeConnection = conn
comm.commandtext = "dbo.dt_bbs"
ตั้งค่า rs = server.createObject ("adodb.recordset"))
Rs.Cursortype = 3
Rs.Open Comm ,, 1,1
3. การสนทนาเพิ่มเติม
การเปรียบเทียบสองวิธีที่ฉันกล่าวถึงข้างต้นเพื่อเรียกขั้นตอนที่เก็บไว้ใน ASP
วิธีแรกต้องใช้วัตถุน้อยลง แต่วัตถุ RecordSet รองรับคุณสมบัติที่น้อยลงเช่น: Rs.RecordCount, Rs.Pagecount, Rs.AbsolutePage และคุณสมบัติอื่น ๆ
ไม่มีใครสนับสนุนดังนั้นจึงมีข้อ จำกัด ในการใช้วิธีแรก ตัวอย่างเช่นเมื่อคุณต้องการแสดงระเบียนบนหน้าเว็บคุณต้องใช้วิธีที่สอง
วัตถุประสงค์ของการใช้ขั้นตอนที่เก็บไว้ใน SQL Server คือการเร่งความเร็ว แต่เมื่อมีคำสั่ง SQL จำนวนมากในขั้นตอนที่เก็บไว้ข้อดีของมันจะชัดเจนเป็นพิเศษ หากมีคำสั่ง SQL ไม่มากนัก
เมื่อเราใช้วิธีที่สองเราต้องสร้างวัตถุคำสั่งเพิ่มเติมซึ่งอาจช้าลง! ดังนั้นเราจะต้องสร้างความสมดุลให้กับผลประโยชน์ของทุกด้านเพื่อใช้ขั้นตอนที่เก็บไว้
อย่างไรก็ตามฉันคิดว่าความเร็วดีมาก การใช้ขั้นตอนที่เก็บไว้สามารถทำให้โปรแกรมเป็นโมดูลมากขึ้นง่ายต่อการปรับเปลี่ยนและแก้ไขข้อบกพร่อง (คุณสามารถดีบักโดยตรงใน SQL Server โดยไม่ต้องดูผลลัพธ์ของ ASP ภายใต้ IE)
ข้างต้นเป็นการแนะนำขั้นตอนที่เก็บไว้สำหรับการโทร ASP ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคุณในการเรียนรู้ความรู้นี้ ฉันหวังว่าทุกคนจะยังคงสนับสนุนช่องทางเทคโนโลยีใหม่ที่ไม่ถูกต้อง!