ตอนที่ 5 : การสร้าง Declare Temp Table – TEMPORARY (MySQL : Stored Procedure)

พฤษภาคม 16, 2018 2:04 am โดย admin
0
7

ตอนที่ 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

Stored Procedure บน MySQL

Table : country

Stored Procedure บน MySQL

Declare TABLE Syntax

1.CREATE TEMPORARY TABLE IF NOT EXISTS temp(
2.RowID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
3.Name VARCHAR(50),
4.CountryName VARCHAR(50)) ENGINE = MEMORY;

เป็นการสร้างตัวแปรชนิดตารางชื่อว่า temp ประกอบด้วยคอลัมบ์ RowID,Name และ CountryName 

Example 1 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table พร้อมกับส่งค่ากลับไป

01.DROP PROCEDURE IF EXISTS getCustomer;
02. 
03.DELIMITER //
04.CREATE PROCEDURE getCustomer()
05.BEGIN
06. 
07.Create Temp Table
08.CREATE TEMPORARY TABLE IF NOT EXISTS temp(
09.RowID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
10.Name VARCHAR(50),
11.CountryName VARCHAR(50)) ENGINE = MEMORY;
12. 
13.Insert Table
14.INSERT INTO temp (Name,CountryName) VALUES ('Weerachai Nukitram','Thailand');
15.INSERT INTO temp (Name,CountryName) VALUES ('Surachai Sirisart','United Stats');
16.INSERT INTO temp (Name,CountryName) VALUES ('Adisorn Boonsong','United Kingdom');
17. 
18.Return Rows
19.SELECT FROM temp;
20. 
21.Drop Table
22.DROP TABLE temp;   
23. 
24.END //
25. 
26.DELIMITER ;

ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table พร้อมกับส่งค่า Rows กลับไป โดยจะมีการรับค่า Parameters ผ่าน Stored Procedure และนำมาใช้กับ Table ด้วย

1.CALL getCustomer();

Result

Declare Table MySQL : Stored Procedure
Example 2 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table โดย Select ข้อมูลจาก Table อื่น และรูปแบบการ Join ข้อมูล

01.DROP PROCEDURE IF EXISTS getCustomer;
02. 
03.DELIMITER //
04.CREATE PROCEDURE getCustomer()
05.BEGIN
06. 
07.Create Temp Table
08.CREATE TEMPORARY TABLE IF NOT EXISTS temp(
09.RowID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
10.Name VARCHAR(50),
11.CountryCode VARCHAR(2)) ENGINE = MEMORY;
12. 
13.Insert Table
14.INSERT INTO temp (Name,CountryCode) SELECT NAME,COUNTRY_CODE FROM customer;
15. 
16.Return Rows
17.SELECT FROM temp;
18. 
19.Drop Table
20.DROP TABLE temp;   
21. 
22.END //
23. 
24.DELIMITER ;

ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table ที่ได้ Select มาจาก customerและรูปแบบการ Join ข้อมูล พร้อมกับส่งค่า Rows กลับไป

1.CALL getCustomer();

Result

Declare Table MySQL : Stored Procedure

แหล่งที่มา : thaicreate.com/tutorial