Last active
May 30, 2016 10:47
-
-
Save Rand01ph/a3ae7460513be1e74e81c670ebad4998 to your computer and use it in GitHub Desktop.
MySQL stored procedure
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DELIMITER // | |
DROP PROCEDURE IF EXISTS ts_init// | |
CREATE PROCEDURE ts_init () | |
BEGIN | |
DECLARE Done INT DEFAULT 0; | |
DECLARE CurrentEventTypeId INT; | |
DECLARE CurrentEventTypeName VARCHAR(10); | |
/*声明游标*/ | |
DECLARE rs CURSOR FOR SELECT `id`, `name` FROM event_type; | |
/* 异常处理 */ | |
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1; | |
/* 打开游标 */ | |
OPEN rs; | |
FETCH NEXT FROM rs INTO CurrentEventTypeId, CurrentEventTypeName; | |
REPEAT | |
IF NOT Done THEN | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'N' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'P' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'Y' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'Q' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'F' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'I' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'O' AND name = CurrentEventTypeName; | |
INSERT INTO `event_status_event_type` (`eventstatus_id`, `eventtype_id`) SELECT s.id, t.id FROM event_status AS s CROSS JOIN event_type AS t WHERE status_mark = 'A' AND name = CurrentEventTypeName; | |
END IF; | |
FETCH NEXT FROM rs INTO CurrentEventTypeId, CurrentEventTypeName; | |
UNTIL Done END REPEAT; | |
CLOSE rs; | |
END // | |
DELIMITER ; | |
CALL ts_init(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment