如何在单个过程中编写多个Insert查询?

时间:2017-03-04 23:16:50

标签: mysql stored-procedures

如何在单个过程中编写多个Insert查询?

CREATE DEFINER=`root`@`localhost` PROCEDURE `Proc_Insert`(IN `newt` VARCHAR(500), IN `news` TEXT, IN `status` VARCHAR(500), IN `ntype` VARCHAR(500), IN `img_file` VARCHAR(1500), IN `vlink` VARCHAR(500))
INSERT INTO tbl_news(newt, news, status, ntype) VALUES (newt,news,status,ntype);
SET LID = LAST_INSERT_ID();
INSERT INTO tbl_img(pic, cid, imgfile, imgtype, imgstatus) VALUES (LID,LID,img_file,ntype,status);
INSERT INTO tbl_video(cid, vlink, vdis, vstatus) VALUES (LID,v_link,news,status);

这是我第一次使用此存储过程。

2 个答案:

答案 0 :(得分:0)

您必须使用beginend附上语句,并添加所需的所有语句:

DELIMITER $$
CREATE PROCEDURE `Proc_Insert`(IN `newt` VARCHAR(500), IN `news` TEXT, IN `status` VARCHAR(500), IN `ntype` VARCHAR(500), IN `img_file` VARCHAR(1500), IN `vlink` VARCHAR(500))
BEGIN
    DECLARE LID INT;

    INSERT INTO tbl_news(newt, news, status, ntype) VALUES (newt,news,status,ntype);
    SET LID = LAST_INSERT_ID();
    INSERT INTO tbl_img(pic, cid, imgfile, imgtype, imgstatus) VALUES (LID,LID,img_file,ntype,status);
    INSERT INTO tbl_video(cid, vlink, vdis, vstatus) VALUES (LID,v_link,news,status);
END$$

答案 1 :(得分:0)

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `paymentStoreProcedure`(IN `inEmail` VARCHAR(100))
BEGIN

    DECLARE x, y, lastID INT DEFAULT 0;
    
        INSERT INTO `payments`(`user_name`, `email`, `billing_address`, `ch_contact`, `city`, `ch_payment_method`, `ch_card_title`, `ch_card_number`, `ch_card_expiration`, `ch_card_cvv`, `created_at`) VALUES ('Nabeel',inEmail,'nazimabad','03211234127','Karachi','bank','Nabeel Ahmed','4242424242424242','02 / 24','123', now());
    
    SELECT MAX(id) INTO lastID FROM `payments`;
    
    SELECT id INTO x FROM `users` WHERE email = inEmail;
    
        INSERT INTO `payment_products`(`payment_id`, `cart_id`, `product_name`, `price`, `quantity`, `product_id`, `created_at`) SELECT lastID, x, `product_name`, `price`, `quantity`, `product_id`, now() FROM `cart_infos` WHERE cart_id = x AND is_sold = 0;
    
    UPDATE `cart_infos` SET is_sold =1 WHERE cart_id=x;
    
    SELECT "Payment received";
    
END$$
DELIMITER ;

注意:我在我的网站上使用了这段代码,所以我复制了它,这样你就可以弄清楚它是可执行的。