Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะใช้ FOR LOOP ใน MySQL Stored Procedure ได้อย่างไร


ต่อไปนี้เป็นไวยากรณ์ที่จะทำงานกับ FOR LOOP ในกระบวนงานที่เก็บไว้ของ MySQL -

ตัวคั่น //สร้างโพรซีเดอร์ yourProcedureName()wholeblock:BEGIN DECLARE anyVariableName1 INT; ประกาศ anyVariableName3 int; ประกาศ anyVariableName2 VARCHAR(255); SET anyVariableName1 =1; ตั้งค่า anyVariableName3 =10; SET anyVariableName2 ='';loop_label:FORLOOP IF anyVariableName1> anyVariableName3 จากนั้นให้ออกจาก loop_label; สิ้นสุดถ้า; SET anyVariableName2 =CONCAT(anyVariableName2 ,anyVariableName1 ,','); SET anyVariableName1 =anyVariableName1 + 1; ITERATE loop_label; สิ้นสุด FORLOOP เลือก anyVariableName2;END//

ตอนนี้คุณสามารถใช้ไวยากรณ์ข้างต้นได้ แบบสอบถาม for วนเป็นดังนี้ -

mysql> ตัวคั่น //mysql> CREATE โพรซีเดอร์ ForLoop() -> wholeblock:BEGIN -> DECLARE start INT; -> ประกาศ maxLimit int; -> ประกาศผล VARCHAR(255); -> SET start =1; -> SET maxLimit=10; -> ผลลัพธ์ของ SET =''; -> loop_label:LOOP -> IF start> 10 แล้ว -> ออกจาก loop_label; -> สิ้นสุดถ้า; -> SET ผล =CONCAT(ผล, เริ่ม,','); -> SET start =เริ่ม + 1; -> วนซ้ำ loop_label; -> สิ้นสุดวง; -> เลือกผลลัพธ์; -> END -> //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.37 วินาที) mysql> ตัวคั่น;

ด้านบนสำหรับลูปพิมพ์ 1 ถึง 10 เช่นในรูปแบบต่อไปนี้ 1,2,3,4,.....10 เรียกใช้กระบวนงานที่เก็บไว้โดยใช้คำสั่ง CALL ไวยากรณ์มีดังนี้ −

เรียก yourStoredProcedureName();

แบบสอบถามที่จะโทรมีดังนี้ −

mysql> โทร ForLoop();

ผลลัพธ์

<ก่อนหน้า>+-----------------------+| ผลลัพธ์ |+-----------------------+| 1,2,3,4,5,6,7,8,9,10, |+----------------------- +1 แถวในชุด (0.00 วินาที) ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.01 วินาที)