gpt4 book ai didi

mysql - 如何创建 SQL 存储过程以插入多个值

转载 作者:行者123 更新时间:2023-11-29 07:25:19 25 4
gpt4 key购买 nike

我有以下语句,它接受一组值并将它们存储在我的 MySQL RDS 中:

INSERT INTO items (item_id, item_name, item_description) VALUES ?

我将其与 AWS Appsync 一起使用,它不提供防止注入(inject)的转义机制,因此我想在我的 RDS 中使用存储过程来针对 injection 的安全性.

此语句将用于创建多个项目,因此将传入一个值数组。

如何创建存储过程以将多个值插入表中?我引用了以下带有单个参数的 select 语句的示例,但我不确定如何将其应用于具有多个参数的更复杂的情况,如我上面的语句。

CREATE PROCEDURE listPets (IN type_param VARCHAR(200))
BEGIN
PREPARE stmt FROM 'SELECT * FROM Pets where type=?';
SET @type = type_param;
EXECUTE stmt USING @type;
DEALLOCATE PREPARE stmt;
END

最佳答案

CREATE PROCEDURE listPets (IN p_itemid INT, IN p_itemname VARCHAR(200), 
IN p_itemdesc VARCHAR(200))
BEGIN
PREPARE stmt FROM 'INSERT INTO items (item_id, item_name, item_description) VALUES (?, ?, ?)';
SET @id = p_itemid, @name = p_itemname, @description = p_itemdesc;
EXECUTE stmt USING @id, @name, @description;
DEALLOCATE PREPARE stmt;
END

请参阅 PREPARE 上的文档和 EXECUTE .

提示:您可能喜欢使用此替代 INSERT 语法:

PREPARE stmt FROM 'INSERT INTO items SET item_id=?, item_name=?, item_description=?';

它是 MySQL 对 SQL 的非标准扩展,可以更轻松地匹配列和 ? 占位符。但它不支持多行插入。

关于mysql - 如何创建 SQL 存储过程以插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54164221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com