Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จำลอง PRINT Statement ใน MySQL ด้วย SELECT

MySQL ไม่มีคำสั่ง PRINT แบบ SQL Server หรือ PostgreSQL (`RAISE NOTICE`) แต่สามารถ **จำลอง** ได้ด้วยคำสั่ง SELECT แบบไม่มี FROM

รูปแบบคำสั่ง

SELECT 'your_message' AS ``;

ใช้ Backtick ว่าง (` `) หรือ Alias ใดๆ ก็ได้ เพื่อไม่ให้แสดงชื่อคอลัมน์

ตัวอย่างการใช้งาน

1. พิมพ์ข้อความ (String)

mysql> SELECT 'HELLO MYSQL' AS ``;
+-------------+
|             |
+-------------+
| HELLO MYSQL |
+-------------+
1 row in set (0.00 sec)

2. พิมพ์ตัวเลข (Integer)

mysql> SELECT 23 AS ``;
+----+
|    |
+----+
| 23 |
+----+
1 row in set (0.00 sec)

3. พิมพ์ทศนิยม (Float/Double)

mysql> SELECT 23.45 AS ``;
+-------+
|       |
+-------+
| 23.45 |
+-------+
1 row in set (0.00 sec)

4. พิมพ์ Expression / Function

mysql> SELECT CONCAT('Current time: ', NOW()) AS ``;
+-----------------------------+
|                             |
+-----------------------------+
| Current time: 2018-11-29... |
+-----------------------------+
1 row in set (0.00 sec)

ใช้ใน Stored Procedure / Trigger

MySQL Stored Procedure ไม่มี PRINT แต่สามารถ SELECT ได้:

DELIMITER //
CREATE PROCEDURE DebugExample(IN input_id INT)
BEGIN
    SELECT CONCAT('Processing ID: ', input_id) AS ``;
    
    IF input_id > 100 THEN
        SELECT 'ID is large, skipping...' AS ``;
    ELSE
        SELECT 'ID is OK, proceeding...' AS ``;
    END IF;
    
    SELECT 'Done' AS ``;
END //
DELIMITER ;

CALL DebugExample(50);

วิธีอื่น: SELECT ... INTO @variable

หากไม่ต้องการแสดงผล แต่ต้องการเก็บค่า:

SELECT 'Message' INTO @msg;  -- เก็บใน User Variable
SELECT @msg;                  -- แสดงภายหลัง

เปรียบเทียบกับ Database อื่น

Databaseคำสั่ง Print/Debug
MySQLSELECT 'msg' AS ``;
SQL ServerPRINT 'msg';
PostgreSQLRAISE NOTICE 'msg';
OracleDBMS_OUTPUT.PUT_LINE('msg');
SQLiteSELECT 'msg'; (CLI)

ข้อควรระวัง

  • SELECT ใน Stored Procedure จะส่ง Result Set กลับ Client → อาจทำให้ Application Error หากไม่คาดคิด
  • ใช้เฉพาะ Debug/Development ไม่ควรใช้ใน Production Procedure
  • สำหรับ Logging จริง ใช้ Table Log หรือ Syslog