我在这里有存储过程:

delimiter //
create procedure insert(p int, n varchar(10), d date, q int)
begin
select pname if(pname!=n)
  then
    insert into prod(p,n,d,q)values(p,n,d,q)
  else quant=quant + q;
from prod;
end;
//


如果prodpname不等于ELSE,则此存储过程会将记录添加到表n中,如果它们相等,则将更新q并将其值加上q。这个主意行不通,您能帮我吗?如何实现这一目标?

最佳答案

....
BEGIN
    DECLARE p CHAR DEFAULT NULL;
    SELECT pname FROM prod WHERE pname = n LIMIT 1 INTO p FOR UPDATE;
    IF(p) THEN
        UPDATE prod SET quant = quant + q WHERE pname = n;
    ELSE
        INSERT INTO prod(p,n,d,q) values(p,n,d,q);
    END IF;
END;


如果您在prod中的pname上具有UNIQUE键,则有更简单的方法来执行此操作。

关于mysql - 使用if语句的存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15418179/

10-10 23:38