MySQL 存储过程是一组预先编译好的 SQL 语句,可以通过调用执行。存储过程可以简化复杂的 SQL 操作,提高代码的重用性和执行效率。
MySQL 存储过程主要分为两类:
存储过程常用于以下场景:
以下是一个简单的 MySQL 存储过程示例,用于批量添加数据:
DELIMITER //
CREATE PROCEDURE BatchInsertData(IN tableName VARCHAR(255), IN data JSON)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE rowCount INT;
DECLARE columns VARCHAR(255);
DECLARE values VARCHAR(255);
DECLARE sqlQuery VARCHAR(1000);
SET rowCount = JSON_LENGTH(data);
SET columns = JSON_UNQUOTE(JSON_EXTRACT(data, CONCAT('$[', i, '].columns')));
SET values = JSON_UNQUOTE(JSON_EXTRACT(data, CONCAT('$[', i, '].values')));
SET sqlQuery = CONCAT('INSERT INTO ', tableName, ' (', columns, ') VALUES (', values, ')');
WHILE i < rowCount DO
PREPARE stmt FROM sqlQuery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET i = i + 1;
END WHILE;
END //
DELIMITER ;假设我们有一个表 users,结构如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);我们可以使用以下 JSON 数据调用存储过程:
[
{
"columns": "name, email",
"values": "'Alice', 'alice@example.com'"
},
{
"columns": "name, email",
"values": "'Bob', 'bob@example.com'"
}
]调用存储过程的 SQL 语句如下:
CALL BatchInsertData('users', '[{"columns": "name, email", "values": "'Alice', 'alice@example.com'"}, {"columns": "name, email", "values": "'Bob', 'bob@example.com'"}]');希望这些信息对你有所帮助!
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
企业创新在线学堂
腾讯云湖存储专题直播
腾讯云消息队列数据接入平台(DIP)系列直播
企业创新在线学堂
“中小企业”在线学堂
云+社区技术沙龙[第22期]
云+社区技术沙龙[第17期]
云+社区技术沙龙[第20期]
云+社区沙龙online [新技术实践]