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

MySQL ดึงชื่อฐานข้อมูลปัจจุบันใน Stored Procedure ด้วย DATABASE()

ใช้ฟังก์ชัน 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 ชื่อฐานข้อมูล