使用if语句的存储过程

时间:2013-03-14 19:11:42

标签: mysql stored-procedures xampp

我这里有存储过程:

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的值。这个想法不起作用你能帮帮我吗?如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

....
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键,有更简单的方法。