โครงสร้าง Stored Procedure พื้นฐาน
ต้องใช้ DELIMITER เพื่อเปลี่ยนตัวจบคำสั่งชั่วคราว ไมให้ชนกับ semicolon ภายใน procedure
รูปแบบคำสั่ง
DELIMITER //
CREATE PROCEDURE yourStoreProcedureName()
BEGIN
DECLARE variable_name type;
-- SQL statements
END //
DELIMITER ;
ตัวอย่างสร้าง Procedure เรียกตาราง
mysql> USE test;
Database changed
mysql> DELIMITER //
mysql> CREATE PROCEDURE Sp_callTableStoredProcTable()
-> BEGIN
-> SELECT * FROM StoredProcTable;
-> END //
Query OK, 0 rows affected (0.54 sec)
mysql> DELIMITER ;
การเรียกใช้ Procedure
mysql> CALL Sp_callTableStoredProcTable();
+-----------+------+ | FirstName | Age | +-----------+------+ | John | 23 | | Bob | 24 | | David | 20 | +-----------+------+ 3 rows in set (0.03 sec)
ตัวอย่าง Procedure นับจำนวนแถว
mysql> DELIMITER //
mysql> CREATE PROCEDURE CountingRecords()
-> BEGIN
-> SELECT COUNT(*) AS AllRecords FROM StoredProcTable;
-> END //
Query OK, 0 rows affected (0.19 sec)
mysql> DELIMITER ;
mysql> CALL CountingRecords();
+------------+ | AllRecords | +------------+ | 3 | +------------+ 1 row in set (0.31 sec)
ข้อควรจำ:
- ต้อง
DELIMITER //ก่อน CREATE PROCEDURE - จบด้วย
END // - คืน
DELIMITER ;หลังสร้างเสร็จ - ใช้
CALL procedure_name()เพื่อเรียกใช้ - ใช้
DROP PROCEDURE IF EXISTS nameก่อนสร้างใหม่เพื่อป้องกัน error