ใน MySQL Stored Procedure ใช้คำสั่ง DECLARE ประกาศตัวแปร Local (ใช้ได้เฉพาะภายใน Procedure) ต่างจาก User-defined Variable (@var) ที่ใช้ได้ทั่ว Session
รูปแบบคำสั่ง
DECLARE variableName datatype DEFAULT defaultValue;
ตัวอย่าง Procedure ใช้ DECLARE
mysql> DELIMITER //
mysql> CREATE PROCEDURE variable_Demo()
-> BEGIN
-> DECLARE lastInsertedId INT DEFAULT -1;
-> SELECT lastInsertedId;
-> SET @providedLastId = 10001;
-> SELECT @providedLastId;
-> END //
Query OK, 0 rows affected
mysql> DELIMITER ;
เรียกใช้ Procedure
mysql> CALL variable_Demo();
ผลลัพธ์ (2 Result Sets)
+----------------+ | lastInsertedId | +----------------+ | -1 | +----------------+ 1 row in set +-----------------+ | @providedLastId | +-----------------+ | 10001 | +-----------------+ 1 row in set
คำอธิบาย:
DECLAREต้องอยู่ต้น Block (หลัง BEGIN) ก่อนคำสั่งอื่น- ตัวแปร Local (
lastInsertedId) ใช้ได้เฉพาะใน Procedure นี้ หายเมื่อ Procedure จบ - ตัวแปร User (
@providedLastId) ใช้ได้ตลอด Session หลัง Procedure จบ - สามารถ
SET var = valueหรือSELECT ... INTO varได้ - ชนิดข้อมูลรองรับทั้งหมด: INT, VARCHAR, DATE, DECIMAL, etc.