การแสดงข้อความ (Message) จาก Stored Procedure ใน MySQL
ใช้ SELECT CONCAT(...) หรือ SELECT 'message' ภายใน Procedure พร้อมเงื่อนไข IF-ELSE
ตัวอย่าง: Procedure แสดงข้อความตามเงื่อนไข
mysql> DELIMITER //
mysql> CREATE PROCEDURE showMessage(value INT, Name VARCHAR(20))
BEGIN
IF (value > 100) THEN
SELECT CONCAT("HELLO", " ", Name);
ELSE
SELECT CONCAT("BYE", " ", Name);
END IF;
END //
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;
Case 1: เรียกด้วยค่า > 100
mysql> CALL showMessage(200, 'John');
+--------------------------+
| CONCAT("HELLO", " ", Name) |
+--------------------------+
| HELLO John |
+--------------------------+
Case 2: เรียกด้วยค่า < 100
mysql> CALL showMessage(10, 'John');
+------------------------+
| CONCAT("BYE", " ", Name) |
+------------------------+
| BYE John |
+------------------------+
วิธีอื่นในการส่งค่ากลับ:
- OUT Parameter:
CREATE PROC p(OUT msg VARCHAR(100)) BEGIN SET msg = 'Hello'; END→CALL p(@msg); SELECT @msg; - RETURN (Function): ใช้
CREATE FUNCTIONแทน Procedure หากต้องการคืนค่า Scalar - Signal/Resignal: สำหรับ Error Handling (
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error')
หมายเหตุ: SELECT ใน Procedure จะส่ง Result Set กลับไปยัง Client (เหมือน Query ปกติ)