ใช้ CREATE PROCEDURE พร้อม DELIMITER เพื่อสร้าง Stored Procedure ที่รัน CREATE TABLE
สร้าง Stored Procedure
mysql> DELIMITER //
mysql> CREATE PROCEDURE Stored_Procedure_CreatingTable()
-> BEGIN
-> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserFirstName VARCHAR(20),
-> UserLastName VARCHAR(20)
-> );
-> END;
-> //
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;
เรียกใช้ Stored Procedure
mysql> CALL Stored_Procedure_CreatingTable();
Query OK, 0 rows affected (0.18 sec)
ตรวจสอบตารางที่สร้าง
mysql> DESC DemoTable;
+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| UserFirstName | varchar(20) | YES | | NULL | |
| UserLastName | varchar(20) | YES | | NULL | |
+---------------+-------------+------+-----+---------+----------------+
จุดสังเกต:
- ต้องเปลี่ยน
DELIMITERก่อนสร้าง Procedure (ป้องกัน ; จบคำสั่งก่อนเวลา) - คืนค่า DELIMITER กลับเป็น ; หลังสร้างเสร็จ
- Procedure นี้รันได้หลายครั้ง แต่ครั้งที่ 2 จะ error เพราะตารางมีอยู่แล้ว (ควรเพิ่ม
IF NOT EXISTS)
เวอร์ชันปรับปรุง (ปลอดภัยกว่า)
CREATE PROCEDURE CreateDemoTable()
BEGIN
CREATE TABLE IF NOT EXISTS DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName VARCHAR(20),
UserLastName VARCHAR(20)
);
END;