MySQL 完整的存儲過程樣例

#修改core_localmedia_server表結構字段
ALTER table core_localmedia_server add server_group_id CHAR(36) DEFAULT NULL COMMENT '服務器組id',add order_index int(11) DEFAULT NULL COMMENT '排序',add access_ip VARCHAR(1000) DEFAULT NULL COMMENT '允許訪問網段(規則:xxx = 精確匹配|xxx - xxx= 範圍(僅IP地址)|* = 部分匹配|?  = 匹配任何字符)';

#創建混合式媒體服務器組表語句
DROP TABLE IF EXISTS `core_localmedia_group`;
CREATE TABLE `core_localmedia_group` (
  `id` char(36) NOT NULL COMMENT '主鍵',
  `org_id` char(36) NOT NULL COMMENT '機構id',
  `group_name` VARCHAR(50) NOT NULL COMMENT '服務器組名',
  `create_user_id` char(36) DEFAULT NULL COMMENT '創建者的uuid',
  `create_fullname` VARCHAR(50) DEFAULT NULL COMMENT '創建者的全名',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_user_id` char(36) DEFAULT NULL COMMENT '更新者的uuid',
  `update_fullname` VARCHAR(50) DEFAULT NULL COMMENT '更新者的全名',
  `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  PRIMARY KEY (`id`)
) COMMENT='混合式媒體服務器組';
ALTER TABLE `core_localmedia_group` ADD INDEX idx_orgId (`org_id` ); 


##################################
DROP PROCEDURE IF EXISTS pro_init;

DELIMITER $$
-- 創建存儲過程
CREATE PROCEDURE pro_init()
BEGIN
	-- 需要定義接收遊標數據的變量 
	DECLARE done BOOLEAN DEFAULT 0;
	DECLARE v_orgId VARCHAR(36); -- 機構id
	
  -- 定義遊標
	DECLARE cur1 CURSOR FOR SELECT orgId FROM core_localmedia_config GROUP BY orgId;
	
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
	
 -- 打開遊標
	OPEN cur1;
 -- 開始循環
	REPEAT
		FETCH cur1 INTO v_orgId;
		
		-- 判斷是否讀到遊標末尾 如果不加這個條件 插入的數據會增多1條
		IF done <1 OR done >1 THEN
			INSERT INTO core_localmedia_group(id,org_id,group_name,create_fullname,update_fullname) VALUES(UUID(),v_orgId,'默認媒體服務器組','系統','系統');
		END IF;
		
		UNTIL done = 1

	END REPEAT;
-- 循環結束

 -- 關閉遊標
  CLOSE cur1 ;
END $$

-- 調用
call pro_init();

-- 刪除
DROP PROCEDURE pro_init;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章