ใช้ฟังก์ชัน DATABASE() เพื่อคืนค่าชื่อฐานข้อมูล (Database Name) ที่เชื่อมต่ออยู่ในขณะนั้น ใช้ได้ทั้งใน Query ธรรมดาและ Stored Procedure
ไวยากรณ์พื้นฐาน
SELECT DATABASE();
ตัวอย่างใช้ใน Stored Procedure
1. สร้าง Stored Procedure
mysql> DELIMITER //
mysql> CREATE PROCEDURE get_procedure_database_name()
-> BEGIN
-> SELECT CONCAT('The database name=', DATABASE());
-> END //
Query OK, 0 rows affected (0.34 sec)
mysql> DELIMITER ;
2. เรียกใช้ Stored Procedure
mysql> CALL get_procedure_database_name();
3. ผลลัพธ์
+-----------------------------------------+
| CONCAT('The database name=', DATABASE()) |
+-----------------------------------------+
| The database name=web |
+-----------------------------------------+
1 row in set (0.05 sec)
ฟังก์ชันเกี่ยวกับฐานข้อมูลที่คล้ายกัน
| ฟังก์ชัน | คำอธิบาย |
|---|---|
DATABASE() | คืนชื่อฐานข้อมูลปัจจุบัน (DEFAULT schema) |
SCHEMA() | เหมือน DATABASE() (Synonym) |
CURRENT_USER() | คืนชื่อผู้ใช้ที่เชื่อมต่ออยู่ |
VERSION() | คืนเวอร์ชัน MySQL Server |
การใช้งานใน Application
ใน Stored Procedure สามารถนำค่า DATABASE() ไปใช้ใน Dynamic SQL หรือ Logic ต่างๆ ได้:
CREATE PROCEDURE backup_current_db()
BEGIN
DECLARE db_name VARCHAR(64);
SET db_name = DATABASE();
SET @sql = CONCAT('BACKUP DATABASE ', db_name, ' TO ...');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
สรุป
DATABASE() ใช้งานง่าย คืนค่าชื่อฐานข้อมูลปัจจุบันเป็นสตริง ใช้ได้ใน Stored Procedure, Trigger, View และ Query ธรรมดา ช่วยให้โค้ด Dynamic SQL ยืดหยุ่น ไม่ต้อง Hardcode ชื่อฐานข้อมูล