ตอนที่ 5 : การสร้าง Declare Temp Table - TEMPORARY (MySQL : Stored Procedure) |
ตอนที่ 5 : การสร้าง Declare Temp Table - TEMPORARY (MySQL : Stored Procedure) ในการเขียน Stored Procedure บน MySQL สำหรับ Feature ของการ Declare Table เป็นเสมือนการสร้าง Temp Table ไว้ชั่วคราว โดยความสามารถนี้ค่อนข้างถือได้ว่าเป็นจุดเด่นและสุดยอดของการเขียน Store Procedure เลยก็ว่าได้ เพราะวัตถุประสงค์ของการเขียน Query เพื่ออ่านข้อมูลจาก Table ก็คือการดึงค่า Result กลับมาใช้บน Application และในกรณีถ้า SQL Query ที่มีความซับซ้อนจนกว่าจะเขียน Query ในแบบปกติได้ การประกาศตัวแปรแบบ Table ขึ้นมา แล้วค่อยคำค่า Result ทีล่ะส่วนที่ได้จาก Statement ต่างมา Insert ลงใน Table ก็เป็นวิธีที่ถูกนำมาใช้งานกันอย่างมาก และการเขียนก็ค่อนข้างง่าย เพียงแค่ประกาศชื่อตัวแปร พร้อมกับ Column และ Data Type จากนั้นสามารถทำการ Insert ข้อมูลลงใน Table หรือจะเลือก Insert จาก Table อื่น ๆ จนครบตามความต้องการ แล้วค่อยส่งค่าทั้งหมดกลับไป
โครงสร้างของตาราง customer และ country
Table : customer
Table : country
Declare TABLE Syntax
CREATE TEMPORARY TABLE IF NOT EXISTS temp(
RowID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(50),
CountryName VARCHAR(50)) ENGINE = MEMORY;
เป็นการสร้างตัวแปรชนิดตารางชื่อว่า temp ประกอบด้วยคอลัมบ์ RowID,Name และ CountryName
Example 1 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table พร้อมกับส่งค่ากลับไป
DROP PROCEDURE IF EXISTS getCustomer;
DELIMITER //
CREATE PROCEDURE getCustomer()
BEGIN
# Create Temp Table
CREATE TEMPORARY TABLE IF NOT EXISTS temp(
RowID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(50),
CountryName VARCHAR(50)) ENGINE = MEMORY;
# Insert Table
INSERT INTO temp (Name,CountryName) VALUES ('Weerachai Nukitram','Thailand');
INSERT INTO temp (Name,CountryName) VALUES ('Surachai Sirisart','United Stats');
INSERT INTO temp (Name,CountryName) VALUES ('Adisorn Boonsong','United Kingdom');
# Return Rows
SELECT * FROM temp;
# Drop Table
DROP TABLE temp;
END //
DELIMITER ;
ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table พร้อมกับส่งค่า Rows กลับไป โดยจะมีการรับค่า Parameters ผ่าน Stored Procedure และนำมาใช้กับ Table ด้วย
CALL getCustomer();
Result
Example 2 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table โดย Select ข้อมูลจาก Table อื่น และรูปแบบการ Join ข้อมูล
DROP PROCEDURE IF EXISTS getCustomer;
DELIMITER //
CREATE PROCEDURE getCustomer()
BEGIN
# Create Temp Table
CREATE TEMPORARY TABLE IF NOT EXISTS temp(
RowID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(50),
CountryCode VARCHAR(2)) ENGINE = MEMORY;
# Insert Table
INSERT INTO temp (Name,CountryCode) SELECT NAME,COUNTRY_CODE FROM customer;
# Return Rows
SELECT * FROM temp;
# Drop Table
DROP TABLE temp;
END //
DELIMITER ;
ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table ที่ได้ Select มาจาก customerและรูปแบบการ Join ข้อมูล พร้อมกับส่งค่า Rows กลับไป
CALL getCustomer();
Result
.
|