MySQL存储过程检索值

时间:2012-02-09 08:48:13

标签: mysql

DELIMITER //
DROP PROCEDURE IF EXISTS sp_vk_suspend//
CREATE PROCEDURE sp_vk_suspend2()
declare today = DATETIME DEFAULT NULL;
declare accid = INT DEFAULT 11;
set today = now();
BEGIN    
    SELECT * FROM members where expirydate < today;    
END //

这是我的存储过程。我必须添加一个或多个依赖于成员表的id的查询。如何从成员表中检索id。

例如:我必须在我的sp

中添加此查询
UPDATE members 
SET suspend = 1 
WHERE id = 'some id from mem: tables'

1 个答案:

答案 0 :(得分:0)

我看到IMHO游标就是你需要的东西

DECLARE done INT DEFAULT FALSE;
DECLARE cur1 CURSOR FOR SELECT id FROM members where expirydate < today;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DECLARE a INT;

OPEN cur1;

my_loop: LOOP
    FETCH cur1 INTO a

    IF done THEN
      LEAVE my_loop;
    END IF;

    UPDATE members SET suspend=1 WHERE id = a;
    INSERT INTO another(member_id) values(a);

END LOOP;
CLOSE cur1;