ขั้นตอนการจัดเก็บคืออะไร?
คำนิยาม:
เขียนงานที่ใช้กันทั่วไปหรืองานที่ซับซ้อนมากไว้ล่วงหน้าด้วยคำสั่ง SQL และจัดเก็บงานเหล่านั้นด้วยชื่อที่ระบุ จากนั้นเมื่อคุณต้องการขอให้ฐานข้อมูลให้บริการด้วยฟังก์ชันเดียวกันกับขั้นตอนการจัดเก็บที่กำหนดไว้ในอนาคต คุณเพียงแค่ต้องเรียกใช้การดำเนินการ . คำสั่งเติมข้อความอัตโนมัติ
ณ จุดนี้ บางคนอาจถามว่า: ดังนั้น Stored Procedure จึงเป็นเพียงคำสั่ง SQL จำนวนมากใช่หรือไม่
เหตุใด Microsoft จึงต้องการเพิ่มเทคโนโลยีนี้
ดังนั้นความแตกต่างระหว่าง Stored Procedure และคำสั่ง SQL ทั่วไปคืออะไร?
ข้อดีของขั้นตอนการจัดเก็บ:
1. กระบวนการที่เก็บไว้จะถูกคอมไพล์เฉพาะเมื่อมีการสร้างขึ้นเท่านั้น ไม่จำเป็นต้องคอมไพล์ใหม่ทุกครั้งที่มีการดำเนินการขั้นตอนที่เก็บไว้ในอนาคต โดยทั่วไป คำสั่ง SQL จะถูกคอมไพล์ทุกครั้งที่มีการดำเนินการ ดังนั้นการใช้ขั้นตอนที่เก็บไว้จึงสามารถปรับปรุงการดำเนินการได้ ความเร็วของฐานข้อมูล
2. เมื่อดำเนินการที่ซับซ้อนบนฐานข้อมูล (เช่น อัปเดต แทรก สืบค้น ลบ ในหลายตาราง) การดำเนินการที่ซับซ้อนนี้สามารถสรุปไว้ในขั้นตอนการจัดเก็บ และใช้ร่วมกับการประมวลผลธุรกรรมที่ฐานข้อมูลจัดเตรียมไว้
3. Stored Procedure สามารถใช้ซ้ำได้ ซึ่งสามารถลดภาระงานของผู้พัฒนาฐานข้อมูลได้
4. มีความปลอดภัยสูง คุณสามารถตั้งค่าได้ว่ามีเพียงผู้ใช้บางรายเท่านั้นที่มีสิทธิ์ใช้กระบวนการจัดเก็บที่ระบุ
ประเภทของขั้นตอนการจัดเก็บ:
1. ขั้นตอนการจัดเก็บของระบบ: เริ่มต้นด้วย sp_ ใช้ในการตั้งค่าระบบ รับข้อมูล และงานการจัดการที่เกี่ยวข้อง เช่น sp_help ซึ่งใช้เพื่อรับข้อมูลที่เกี่ยวข้องกับวัตถุที่ระบุ
2. กระบวนการจัดเก็บแบบขยายเริ่มต้นด้วย XP_ และใช้เพื่อเรียกใช้ฟังก์ชันที่ระบบปฏิบัติการจัดเตรียมไว้ให้
ผู้บริหารหลัก..xp_cmdshell 'ping 10.8.16.1'
3. ขั้นตอนการจัดเก็บที่ผู้ใช้กำหนด นี่คือสิ่งที่เราเรียกว่าขั้นตอนการจัดเก็บ
รูปแบบทั่วไป
สร้างขั้นตอน Procedure_name
[@พารามิเตอร์ data_type][เอาต์พุต]
[ด้วย]{คอมไพล์ใหม่|การเข้ารหัส}
เช่น
ql_statement
อธิบาย:
เอาท์พุต: บ่งชี้ว่าพารามิเตอร์นี้สามารถส่งคืนได้
ด้วย {คอมไพล์ใหม่|การเข้ารหัส}
คอมไพล์ใหม่: หมายความว่าโพรซีเดอร์ที่เก็บไว้นี้จะถูกคอมไพล์ใหม่ทุกครั้งที่ถูกดำเนินการ
การเข้ารหัส: เนื้อหาของขั้นตอนการจัดเก็บที่สร้างขึ้นจะถูกเข้ารหัส
ชอบ:
เนื้อหาของหนังสือตารางมีดังนี้
ราคาชื่อหนังสือมีเลขกำกับ
001 ความรู้เบื้องต้นเกี่ยวกับภาษา C$30
002 การพัฒนารายงาน PowerBuilder$52
ตัวอย่างที่ 1: ขั้นตอนการจัดเก็บเพื่อสืบค้นเนื้อหาของตาราง Book
สร้าง proc query_book
เช่น
เลือก * จากหนังสือ
ไป
ดำเนินการ query_book
ตัวอย่างที่ 2: เพิ่มบันทึกลงในสมุดตารางและสอบถามจำนวนหนังสือทั้งหมดในตารางนี้
สร้าง proc insert_book
@ param1 char(10),@param2 varchar(20),@param3 เงิน,@param4 เงินออก
ด้วยการเข้ารหัส ---------- การเข้ารหัส
เช่น
ใส่หนังสือ(หมายเลข, ชื่อหนังสือ, ราคา) ค่า(@param1,@param2,@param3)
เลือก @param4=sum(price) จากหนังสือ
ไป
ตัวอย่างการดำเนินการ:
ประกาศเงิน @total_price
exec insert_book '003', 'คู่มือการพัฒนาการควบคุม Delphi', $100,@total_price
พิมพ์ 'ยอดรวมคือ'+แปลง(varchar,@total_price)
ไป
ค่าส่งคืนสามประเภทจาก Stored Procedure:
1. ส่งกลับจำนวนเต็มด้วย Return
2. ส่งกลับพารามิเตอร์ในรูปแบบเอาต์พุต
3.ชุดบันทึก
ความแตกต่างระหว่างค่าที่ส่งคืน:
สามารถรับทั้งเอาต์พุตและการส่งคืนเป็นตัวแปรในโปรแกรมแบตช์ และชุดระเบียนจะถูกส่งกลับไปยังไคลเอนต์ที่รันแบตช์
ตัวอย่างที่ 3: มีสองตาราง ผลิตภัณฑ์และคำสั่งซื้อ โดยมีเนื้อหาตารางต่อไปนี้:
ผลิตภัณฑ์
หมายเลขผลิตภัณฑ์ ชื่อผลิตภัณฑ์ ปริมาณการสั่งซื้อของลูกค้า
001 ปากกา 30
002 แปรง 50
003 ดินสอ 100
คำสั่ง
หมายเลขผลิตภัณฑ์ ชื่อลูกค้า เงินฝากของลูกค้า
001 เขตหนานซาน 30 ดอลลาร์
002 เขตหลัวหู$50
003 เขตเป่าอาน$4
โปรดใช้หมายเลขเป็นเงื่อนไขในการเชื่อมต่อทั้งสองตารางเข้ากับตารางชั่วคราว
จำนวนเงินทั้งหมด = เงินฝาก * ปริมาณการสั่งซื้อ ตารางชั่วคราวจะถูกวางไว้ในกระบวนการจัดเก็บ
รหัสมีดังนี้:
สร้าง proc temp_sale
เช่น
เลือก a.หมายเลขผลิตภัณฑ์,a.ชื่อผลิตภัณฑ์,b.ชื่อลูกค้า,b.เงินฝากของลูกค้า,a.ปริมาณการสั่งซื้อของลูกค้า* b.ลูกค้าฝากเงินเป็นยอดรวม
เข้าสู่ #temptable จาก Product a Inner Join Order b บน a.product number=b.product number
ถ้า @@error=0
พิมพ์ 'ดี'
อื่น
พิมพ์ 'ล้มเหลว'