Mysql存储过程+更新查询

时间:2013-09-07 07:07:44

标签: mysql stored-procedures

问题在于mysql程序。我想在mysql程序中运行更新查询。我创建了该过程并调用它没有任何错误。但问题是程序中的更新查询没有被执行。

delimiter $$
create procedure update_member_status(IN new_mem_id int,IN mem_count int)
begin

declare tot_ref_count,mem_ref_id int default 0;

select ref_id into mem_ref_id
from ccf_user
where user_id=new_mem_id;

select ref_count into tot_ref_count 
from ccf_user
where user_id=mem_ref_id;

if tot_ref_count = mem_count then
update ccf_user 
set status='permanent'
where user_id=mem_ref_id;
else
update ccf_user 
set status='*****'
where user_id=mem_ref_id;
end if;

end
$$

然后我打电话给程序: -     调用update_member_status(25,6)

我希望程序中的更新查询能够执行

1 个答案:

答案 0 :(得分:0)

我会从将此过程重写为单个SQL语句开始:

UPDATE ccf_user c1, ccf_user c2
   SET c1.status = 
       CASE WHEN c1.ref_count = @mem_count 
            THEN 'permament' ELSE '*****' END
WHERE c1.user_id = c2.ref_id
      AND c2.user_id = @new_mem_id
;

然后分析它是否给出预期结果,例如使用:http://www.sqlfiddle.com/#!2/2310b/1