มีบทความมากมายเกี่ยวกับ ASP และขั้นตอนที่เก็บไว้ แต่ฉันสงสัยว่าผู้เขียนได้ฝึกฝนจริง ๆ แล้ว ฉันอ่านข้อมูลที่เกี่ยวข้องมากมายเมื่อฉันอยู่ในช่วงแรกและพบว่าวิธีการที่มีให้หลายวิธีไม่ใช่กรณีในทางปฏิบัติ สำหรับการใช้งานง่าย ๆ วัสดุเหล่านี้อาจมีประโยชน์ แต่เพียงเพราะมันเหมือนกันการลอกเลียนแบบซึ่งกันและกันและการใช้งานที่ซับซ้อนกว่าเล็กน้อยจะคลุมเครือ
ตอนนี้ฉันเข้าถึง SQLServer โดยทั่วไปโดยเรียกขั้นตอนที่เก็บไว้ ข้อความต่อไปนี้เป็นบทสรุปของการฝึกฝนและฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน
ขั้นตอนที่เก็บไว้คือคำสั่ง SQL หนึ่งคำหรือมากกว่าที่เก็บไว้ในฐานข้อมูลเป็นวัตถุที่เรียกใช้งานได้
คำจำกัดความเป็นนามธรรมเสมอ ขั้นตอนที่เก็บไว้เป็นชุดของคำสั่ง SQL ที่สามารถดำเนินการบางอย่างให้เสร็จสมบูรณ์ แต่ชุดของคำสั่งนี้ถูกวางไว้ในฐานข้อมูล (เราจะพูดถึง SQLServer เท่านั้นที่นี่) หากเราสร้างขั้นตอนที่เก็บไว้และโทรขั้นตอนที่เก็บไว้ใน ASP เราสามารถหลีกเลี่ยงการผสมคำสั่ง SQL ด้วยรหัส ASP มีประโยชน์อย่างน้อยสามประการในการทำเช่นนี้:
ก่อนอื่นปรับปรุงประสิทธิภาพอย่างมาก ขั้นตอนที่เก็บไว้นั้นเร็วมากและการเรียกขั้นตอนการจัดเก็บสามารถลดจำนวนการโต้ตอบกับฐานข้อมูลได้อย่างมาก
ประการที่สองปรับปรุงความปลอดภัย หากคำสั่ง SQL ถูกผสมในรหัส ASP เมื่อรหัสหายไปนั่นหมายความว่าโครงสร้างห้องสมุดจะหายไป
ประการที่สามมันเอื้อต่อการใช้คำสั่ง SQL ซ้ำ
ใน ASP โดยทั่วไปขั้นตอนที่เก็บไว้จะเรียกผ่านวัตถุคำสั่ง ตามสถานการณ์ที่แตกต่างกันบทความนี้ยังแนะนำวิธีการโทรอื่น ๆ เพื่อความสะดวกในการอธิบายการจำแนกประเภทอย่างง่ายต่อไปนี้จะทำตามอินพุตและเอาต์พุตของขั้นตอนที่เก็บไว้:
1. ส่งคืนขั้นตอนที่เก็บไว้สำหรับชุดระเบียนเดียวเท่านั้น
สมมติว่ามีขั้นตอนที่เก็บไว้ต่อไปนี้ (วัตถุประสงค์ของบทความนี้ไม่ได้อธิบายถึงไวยากรณ์ T-SQL ดังนั้นขั้นตอนที่เก็บไว้จะให้รหัสเท่านั้นและไม่ได้อธิบาย):
/*sp1*/
การคัดลอกรหัสมีดังนี้:
CreateProceduredbo.getUserList
เช่น
setNocounton
เริ่ม
เลือก*fromdbo [userinfo]
จบ
ไป
ขั้นตอนที่เก็บไว้ข้างต้นได้รับระเบียนทั้งหมดในตาราง UserInfo และส่งคืนชุดระเบียน รหัส ASP สำหรับการเรียกขั้นตอนการจัดเก็บผ่านวัตถุคำสั่งมีดังนี้:
'** ขั้นตอนการโทรผ่านวัตถุคำสั่ง **
Dimmycomm, Myrst
setMyComm = server.createObject ("adoDB.Command"))
myComm.activeConnection = myConstr'MyConst เป็นสตริงการเชื่อมต่อฐานข้อมูล
myComm.CommandText = "getUserList" 'ระบุชื่อขั้นตอนที่เก็บไว้
MyComm.CommandType = 4 'ระบุว่านี่เป็นขั้นตอนที่เก็บไว้
myComm.Prepared = true 'ต้องการคำสั่ง SQL ที่จะรวบรวมก่อน
setMyrst = myComm.execute
setMyComm = ไม่มีอะไร
ชุดบันทึกที่ได้รับจากขั้นตอนที่เก็บไว้จะถูกกำหนดให้กับ Myrst ถัดไป Myrst สามารถดำเนินการได้
ในรหัสด้านบนคุณสมบัติ CommandType ระบุประเภทของคำขอค่าและคำอธิบายมีดังนี้: