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

ข้อความ "ไม่ใช่ตัวแปรหรือตัวแปรเทียมใหม่" MySQL ข้อผิดพลาดนี้ใน Stored Procedure ของฉันคืออะไร


เพื่อกำจัดข้อความแสดงข้อผิดพลาดนี้ ให้เราดูตัวอย่าง แต่ก่อนหน้านั้นให้เราไปผ่านแนวความคิดเพื่อแก้ไขกันก่อน

ใช้ตัวแปรเพื่อรับค่าจากขั้นตอนการจัดเก็บ ตัวแปรจะขึ้นต้นด้วยสัญลักษณ์ @ ไวยากรณ์มีดังนี้ −

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 ถูกแทรกแล้ว ตอนนี้คุณจะไม่ได้รับข้อความแสดงข้อผิดพลาด