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

การใช้ Dynamic SQL ภายใน MySQL Stored Procedure

Dynamic SQL ใน Stored Procedure ด้วย PREPARE STATEMENT

เมื่อต้องการสร้างและรันคำสั่ง SQL แบบไดนามิกภายใน Stored Procedure ใช้ PREPARE, EXECUTE, DEALLOCATE PREPARE

ตัวอย่าง

CREATE TABLE DemoTable2033 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20)
);

INSERT INTO DemoTable2033 (Name) VALUES
('Chris'), ('Bob'), ('David'), ('Mike');

DELIMITER //

CREATE PROCEDURE dynamic_query()
BEGIN
    SET @query = CONCAT('SELECT * FROM DemoTable2033 WHERE Id = 3');
    PREPARE stmt FROM @query;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END //

DELIMITER ;

CALL dynamic_query();

ผลลัพธ์

IdName
3David

ขั้นตอนสำคัญ:

  1. SET @query = ... สร้างคำสั่ง SQL เป็นสตริง
  2. PREPARE stmt FROM @query คอมไพล์คำสั่ง
  3. EXECUTE stmt รันคำสั่ง
  4. DEALLOCATE PREPARE stmt ปล่อยทรัพยากร (สำคัญมากเพื่อป้องกัน Memory Leak)

การประยุกต์: สามารถสร้างคำสั่ง SQL แบบไดนามิกจากพารามิเตอร์ที่ส่งเข้ามาได้