乐者为王

Do one thing, and do it well.

批量更新表中某个字段的值到另一个字段的存储过程(MySQL版)

对博客做了一些修改,需要将entries表中的updatetime字段值替换成pubtime字段的值,为此写了一个MySQL存储过程,其中涉及游标的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DELIMITER //

CREATE PROCEDURE sp_batch_replace_field_value_with_another()
BEGIN
    DECLARE p_id INT;
    DECLARE p_pubtime DATETIME;
    DECLARE p_done BOOL;
    DECLARE p_cursor CURSOR FOR SELECT id, pubtime FROM entries;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET p_done = true;

    OPEN p_cursor;
        REPEAT
            FETCH p_cursor INTO p_id, p_pubtime;
            UPDATE entries SET updatetime = p_pubtime WHERE id = p_id;
            UNTIL p_done = true
        END REPEAT;
    CLOSE p_cursor;
END//

DELIMITER ;

第一次在SQLyog中写存储过程,在修改了存储过程后竟然不知道如何保存。点击File -> Save却是保存为另外一个文件,而不是直接保存修改的存储过程。经过多番尝试后发现按F5键就可以了。

Comments