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

ตั้งค่าตัวแปรสองตัวใน Stored Procedure ด้วย SELECT เดียวใน MySQL

สามารถดึงค่าจากตารางมาเก็บในตัวแปรหลายตัวพร้อมกันได้ด้วยคำสั่ง SELECT ... INTO

ตัวอย่าง Stored Procedure

mysql> DELIMITER //
mysql> create procedure Sp_Demo()
    -> BEGIN
    ->     declare one varchar(20);
    ->     declare two varchar(20);
    ->     select FirstName, LastName INTO one, two from useProcedure where id = 1;
    ->     select one, two;
    -> END;
    -> //
Query OK, 0 rows affected (0.26 sec)
mysql> DELIMITER ;

การเรียกใช้งาน

mysql> call Sp_Demo();
+------+-------+
| one  | two   |
+------+-------+
| Adam | Smith |
+------+-------+

จุดสำคัญ

  • ลำดับคอลัมน์ใน SELECT ต้องตรงกับลำดับตัวแปรใน INTO
  • จำนวนคอลัมน์และตัวแปรต้องเท่ากัน
  • Query ต้องคืนค่าแถวเดียวเท่านั้น (ใช้ WHERE กับ PRIMARY KEY หรือ LIMIT 1)

รูปแบบอื่นๆ

ใช้ตัวแปรเซสชัน (Session Variables)

SELECT FirstName, LastName INTO @one, @two FROM useProcedure WHERE id = 1;

ดึงหลายแถว (ต้องใช้ Cursor)

DECLARE cur CURSOR FOR SELECT FirstName, LastName FROM useProcedure;
OPEN cur;
FETCH cur INTO var1, var2;
-- loop...
CLOSE cur;