MySQL 存储过程(Stored Procedure)是一种在 MySQL 数据库中存储的程序,它可以被调用执行一系列 SQL 语句。存储过程可以简化复杂的 SQL 操作,提高代码的可重用性和执行效率。
MySQL 存储过程主要有以下几种类型:
存储过程广泛应用于以下场景:
以下是一个使用 MySQL 存储过程进行批量插入的示例:
DELIMITER //
CREATE PROCEDURE BatchInsert(IN tableName VARCHAR(255), IN data JSON)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE rowCount INT;
DECLARE columnNames VARCHAR(255);
DECLARE placeholders VARCHAR(1000);
DECLARE values JSON;
SET rowCount = JSON_LENGTH(data);
SET columnNames = JSON_UNQUOTE(JSON_EXTRACT(data, '$[0].*'));
SET placeholders = REPEAT('?, ', rowCount - 1) || '?';
SET @sql = CONCAT('INSERT INTO ', tableName, ' (', columnNames, ') VALUES (', placeholders, ')');
PREPARE stmt FROM @sql;
LOOP
SET i = i + 1;
SET values = JSON_EXTRACT(data, CONCAT('$[', i - 1, ']'));
EXECUTE stmt USING JSON_UNQUOTE(JSON_EXTRACT(values, '$.*'));
IF i = rowCount THEN
LEAVE LOOP;
END IF;
END LOOP;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
假设我们有一个表 users
,结构如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
我们可以使用以下 JSON 数据调用存储过程进行批量插入:
[
{"name": "Alice", "email": "alice@example.com"},
{"name": "Bob", "email": "bob@example.com"}
]
调用存储过程的 SQL 语句如下:
CALL BatchInsert('users', '[
{"name": "Alice", "email": "alice@example.com"},
{"name": "Bob", "email": "bob@example.com"}
]');
希望以上信息对你有所帮助!
腾讯云湖存储专题直播
企业创新在线学堂
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
云+社区技术沙龙[第17期]
云+社区沙龙online第5期[架构演进]
云+社区沙龙online [新技术实践]
云+社区技术沙龙[第20期]
云+社区技术沙龙[第22期]
腾讯云消息队列数据接入平台(DIP)系列直播
腾讯云数据库TDSQL训练营
领取专属 10元无门槛券
手把手带您无忧上云