2013-03-14 123 views
1

我已经在这里存储过程:存储过程使用if语句

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; 
// 

这个存储过程将记录添加到表prod如果pnamen不相等,否则,如果他们是平等的,在定量将更新,由q的值加上。这个想法不起作用,你能帮助我吗?如何实现这一目标?

+0

还有其他答案吗? – 2013-03-19 14:12:07

回答

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键,有一些简单的方法可以做到这一点。

+0

你为什么宣布p?它已经在过程参数中声明了吗?你的意思是限制1部分? – 2013-03-15 02:42:17