第一个MySQL 存储过程

昨天写了人生第一个mysql存储过程;遗憾的是,这个存储过程最后还是没用上,用php代码替代

话说mysql的存储过程真是反人类,不查reference,基本不能看懂那些语句;语言中能和它相比的,只有bash shell脚本了

好了,记录一下这个存储过程吧:

DELIMITER //

CREATE PROCEDURE get_task(IN qstatus int, IN prj varchar(20))
BEGIN
    DECLARE task_id INT DEFAULT 0;
    DECLARE done INT DEFAULT 0;

    DECLARE cur CURSOR FOR
        SELECT id FROM task WHERE status=qstatus and project=prj limit 1;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
                ROLLBACK;
    END;

    declare exit handler for not found
    BEGIN
                CLOSE cur;
                ROLLBACK;
    END;

                START TRANSACTION;

    OPEN cur;
                FETCH cur INTO task_id;
    update task set status=2 where id=task_id;
    CLOSE cur;

    commit;

    SELECT * from task where id=task_id;
END

DELIMITER ;

 

posted on 2013-09-12 16:19  夏日微风Python笔记  阅读(1070)  评论(0编辑  收藏  举报

导航