2012-02-09 18 views
0
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 // 

これは私のストアドプロシージャです。私は1つまたは複数のクエリを追加する必要がありますメンバーテーブルからのID。メンバーテーブルからIDを取得する方法MySQLストアドプロシージャの検索値

例:私は私のSPに

UPDATE members 
SET suspend = 1 
WHERE id = 'some id from mem: tables' 
+0

を必要とするものですIMHOカーソルを参照してください? – triclosan

+0

はい、すべての有効期限のメンバーを更新する必要があります。 – pico

+0

この方法では試してみてはいかがですか?UPDATEメンバSET suspend = 1 WHERE expirydate triclosan

答えて

0

をこのクエリを追加する必要があり、私はそれはあなたが `expirydate

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;