使用存储过程插入和更新

1 mysql sql stored-procedures

我的存储过程有问题(在MySQL上).如果记录存在,我需要表的数据更新过程,否则插入记录.我有:

DELIMITER //

CREATE PROCEDURE saveorUpdate(in product varchar(30), price int, stock int, active varchar(5))

BEGIN

DECLARE id int;

SELECT id_pro FROM products WHERE product=product into id;

IF(id_pro=id)THEN

UPDATE products SET product=product, price=price, stock=stock, active=active 
WHERE id_pro=id;

ELSE

INSERT INTO products (product, price, stock, active) VALUES 
(product, price, stock, active);

END IF;
END
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Cra*_*aub 5

由于您的数据库是MySQL,您可以使用INSERT INTO ... ON DUPLICATE KEY语法并废弃存储过程内容.

INSERT INTO products (
  product, price, stock, active
) VALUES (
  $product, $price, $stock, $active
) ON DUPLICATE KEY UPDATE
  product=VALUES(product)
 , price=VALUES(price)
 , stock=VALUES(stock)
 , active=VALUES(active)
Run Code Online (Sandbox Code Playgroud)

只是一个想法.可以更清洁,更快地编写替代品.

希望有所帮助