Mysql存储过程+更新查询

标签 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)

我想执行过程中的更新查询

最佳答案

我将从将此过程重写为单个 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

关于Mysql存储过程+更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670752/

相关文章:

php - 使用php删除数据库中的特定表

MySQL : How to use rownumber with a join Query statement?

mysql - SQL 查询根据正在连接的主表的 PK 填充表

mysql - 当INSERT/UPDATE/DELETE修改表时如何自动运行查询?

mysql - MySQL正确调用存储过程

mysql LOAD DATA INFILE NA 到 NULL 转换

mysql - 既然可以用用户名搜索,为什么还要在 MySQL 中使用 ID?

java - 在 Hibernate 3 中使用存储过程

oracle - PL/SQL存储过程创建表

mysql - 是否可以在 MySQL 中定义一个未指定返回类型的存储函数?