เพื่อกำจัดข้อความแสดงข้อผิดพลาดนี้ ให้เราดูตัวอย่าง แต่ก่อนหน้านั้นให้เราไปผ่านแนวความคิดเพื่อแก้ไขกันก่อน
ใช้ตัวแปรเพื่อรับค่าจากขั้นตอนการจัดเก็บ ตัวแปรจะขึ้นต้นด้วยสัญลักษณ์ @ ไวยากรณ์มีดังนี้ −
CALL yourStoredProcedureName(yourParameter1,yourParameter2,..........N,@yourVariableName);
หากต้องการดูค่าของตัวแปร คุณต้องใช้คำสั่ง select ไวยากรณ์มีดังนี้ −
SELECT @yourVariableName;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตารางและแทรกบางระเบียนในตาราง
แบบสอบถามเพื่อสร้างตารางมีดังนี้ −
mysql> สร้างตาราง StoredProcedureDemo -> ( -> Id int, -> Name varchar(10) -> );Query OK, 0 แถวได้รับผลกระทบ (1.20 วินาที)
ตอนนี้แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า StoredProcedureDemo (1,'John'); Query OK, 1 แถวได้รับผลกระทบ (0.31 วินาที)mysql> แทรกลงในค่า StoredProcedureDemo (2,'Carol'); Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที )
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก StoredProcedureDemo;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+------+-------+| รหัส | ชื่อ |+------+-------+| 1 | จอห์น || 2 | Carol |+------+-------+2 แถวในชุด (0.00 วินาที)นี่คือขั้นตอนการจัดเก็บที่คืนค่า แบบสอบถามมีดังต่อไปนี้เพื่อสร้างขั้นตอนการจัดเก็บ -
mysql> DELIMITER //mysql> สร้างโพรซีเดอร์ Update_table(IN Id int, IN Name VARCHAR(20), OUT message VARCHAR(50)) -> BEGIN -> set message='ฐานข้อมูลได้รับการปรับปรุงแล้ว'; -> INSERT INTO StoredProcedureDemo -> ค่า (Id, Name); -> สิ้นสุด; -> //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.67 วินาที) mysql> DELIMITER;
ตอนนี้เรียกกระบวนงานที่เก็บไว้ด้วยค่าบางอย่าง -
mysql> โทร Update_table(3,'Larry',@UserMessage);
แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.13 วินาที)
ตรวจสอบค่าของตัวแปร @UserMessage โดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก @UserMessage;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+---------------------------+| @UserMessage |+---------------------------+| ฐานข้อมูลได้รับการปรับปรุง |+--------------------------+1 แถวในชุด (0.00 วินาที)ตรวจสอบบันทึกตารางอีกครั้ง แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก StoredProcedureDemo;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+------+-------+| รหัส | ชื่อ |+------+-------+| 1 | จอห์น || 2 | แครอล || 3 | Larry |+------+-------+3 แถวในชุด (0.00 วินาที)ดูเอาต์พุตตัวอย่างด้านบน เร็กคอร์ดใหม่ที่มี id 3 ถูกแทรกแล้ว ตอนนี้คุณจะไม่ได้รับข้อความแสดงข้อผิดพลาด