首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建SQL存储过程以插入多个值

问如何创建SQL存储过程以插入多个值
EN

Stack Overflow用户
提问于 2019-01-13 05:55:49
回答 2查看 194关注 0票数 1

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

代码语言:javascript
复制
INSERT INTO items (item_id, item_name, item_description) VALUES ?

我在AWS Appsync中使用它,它没有提供转义机制来防止注入,所以我想在我的RDS中使用一个存储过程来防止injection的安全。

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

如何创建存储过程以将多个值插入到表中?我被引用到下面的一个只有一个参数的select语句的例子中,但我不确定如何才能将它应用到像我上面的语句中那样具有多个参数的更复杂的情况。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-13 06:10:04

代码语言:javascript
复制
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上的文档。

提示:您可能希望使用此替代插入语法:

代码语言:javascript
复制
PREPARE stmt FROM 'INSERT INTO items SET item_id=?, item_name=?, item_description=?';

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

票数 1
EN

Stack Overflow用户

发布于 2019-01-13 06:24:46

如果您打算更新现有记录:

代码语言:javascript
复制
CREATE PROCEDURE LIST_Pets
(
    --These are the Variables/columns you need to enter data into to update
    @item_name VARCHAR(15),
    @item_description VARCHAR(30),

    --These are the variables used to get the correct record which needs update
    @item_id INT
)
AS
BEGIN
UPDATE TABLE type_param
SET item_name = ISNULL(item_name, @item_name)--if the item_name is null it will insert @item_name
SET item_description = ISNULL(item_description, @item_description)
WHERE item_id = @item_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54164221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档