Skip to content

Instantly share code, notes, and snippets.

@Rand01ph
Last active May 30, 2016 10:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Rand01ph/a3ae7460513be1e74e81c670ebad4998 to your computer and use it in GitHub Desktop.
Save Rand01ph/a3ae7460513be1e74e81c670ebad4998 to your computer and use it in GitHub Desktop.
MySQL stored procedure
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