MySQL 存储过程是一种在数据库中存储复杂程序,以便外部程序调用的数据库对象。存储过程可以接受参数,返回多个结果集以及返回值。它们可以被视为批处理文件,但功能更强大。
预处理是 SQL 语句在执行前的一种处理方式,主要用于提高 SQL 执行效率,防范 SQL 注入攻击。MySQL 中的预处理主要通过 PREPARE 和 EXECUTE 语句实现。
MySQL 存储过程中的预处理主要涉及以下类型:
存储过程和预处理结合使用通常在以下场景中:
以下是一个简单的 MySQL 存储过程示例,该存储过程使用预处理来插入数据:
DELIMITER //
CREATE PROCEDURE InsertUser(IN p_username VARCHAR(255), IN p_email VARCHAR(255))
BEGIN
DECLARE stmt VARCHAR(1000);
-- 准备 SQL 语句
SET stmt = CONCAT('INSERT INTO users (username, email) VALUES (?, ?)');
-- 准备并执行 SQL 语句
PREPARE insert_stmt FROM stmt;
EXECUTE insert_stmt USING p_username, p_email;
DEALLOCATE PREPARE insert_stmt;
END //
DELIMITER ;
DEALLOCATE PREPARE
释放资源,以避免内存泄漏。领取专属 10元无门槛券
手把手带您无忧上云