首先實現代碼:
DELIMITER $$
USE `parents_send`$$
DROP PROCEDURE IF EXISTS `createCardInfomationTable`$$
CREATE PROCEDURE `createCardInfomationTable`(tableCount INT)
BEGIN
DECLARE i INT;
DECLARE table_name VARCHAR(20);
DECLARE table_pre VARCHAR(20);
DECLARE sql_text VARCHAR(20000);
SET i=1;
SET table_name='';
SET table_pre='jzh_dynamic_message_';
SET sql_text='';
WHILE i<tableCount+1 DO
SET @table_name=CONCAT(table_pre,CONCAT(i, ''));
SET sql_text=CONCAT('CREATE TABLE ', @table_name, '(\`msg_id\` varchar(50) NOT NULL COMMENT \'消息id\',
\`report_id\` varchar(50) DEFAULT NULL COMMENT \'學習報告id\',
\`report_name\` varchar(200) DEFAULT NULL COMMENT \'學習報告名稱\',
\`report_time\` varchar(50) DEFAULT NULL COMMENT \'學習報告時間\',
\`link_url\` varchar(200) DEFAULT NULL COMMENT \'外鏈url\',
\`total_grade\` varchar(50) DEFAULT NULL COMMENT \'總分\',
\`evaluate\` varchar(50) DEFAULT NULL COMMENT \'評級\',
\`class_id\` varchar(50) DEFAULT NULL COMMENT \'班級id\',
\`subject_id\` varchar(50) DEFAULT NULL COMMENT \'學科id\',
\`subject_name\` varchar(200) DEFAULT NULL COMMENT \'學科名稱\',
\`student_id\` varchar(50) DEFAULT NULL COMMENT \'學員id\',
\`student_name\` varchar(200) DEFAULT NULL COMMENT \'學員姓名\',
\`class_time\` varchar(100) DEFAULT NULL COMMENT \'上課時間\',
\`class_name\` varchar(200) DEFAULT NULL COMMENT \'班級名稱\',
\`class_address\` varchar(200) DEFAULT NULL COMMENT \'上課地點\',
\`year\` varchar(50) DEFAULT NULL COMMENT \'年份\',
\`term_id\` varchar(50) DEFAULT NULL COMMENT \'學期ID\',
\`grade_id\` varchar(50) DEFAULT NULL COMMENT \'年級ID\',
\`message_card_type\` varchar(50) DEFAULT NULL COMMENT \'卡片類型 1.第一類消息 2.第二類消息\',
\`message_return_status\` varchar(50) DEFAULT NULL COMMENT \'appMq消息狀態: -1.Mq發送失敗 0.app消息已發送(通過Mq推送給家長端app) 1.app點贊(1類卡片,當app家長端卡片點贊,已經通過接口調用ips接口clickLike) 2.app觸發提醒消息已經發送到家長會app(2類卡片 當app家長端讀取消息調用接口remindUrged成功 )\',
\`is_delete\` varchar(50) DEFAULT NULL COMMENT \'是否刪除\',
\`right_num\` varchar(50) DEFAULT NULL COMMENT \'答題正確數目\',
\`error_num\` varchar(50) DEFAULT NULL COMMENT \'答題錯誤數目\',
\`insert_time\` varchar(50) DEFAULT NULL COMMENT \'插入時間\',
\`update_time\` varchar(50) DEFAULT NULL COMMENT \'更新時間\',
\`channel_flag\` varchar(50) DEFAULT NULL COMMENT \'渠道標識\',
\`city_code\` varchar(50) DEFAULT NULL COMMENT \'城市碼\',
\`app_message_id\` varchar(50) DEFAULT NULL COMMENT \'業務系統數據id\',
\`course_types\` varchar(50) DEFAULT NULL COMMENT \'課次類型0代表普通,1代表n講一測,2代表體驗類\',
\`course_id\` varchar(50) DEFAULT NULL COMMENT \'ips課次id\',
\`message_from\` varchar(50) DEFAULT NULL,
\`course_name\` varchar(200) DEFAULT NULL COMMENT \'課次名稱\',
\`course_order\` varchar(50) DEFAULT NULL COMMENT \'ips課次序號\',
\`course_level_id\` varchar(50) DEFAULT NULL COMMENT \'ips關卡id\',
\`course_level_order\` varchar(50) DEFAULT NULL COMMENT \'關卡序號\',
\`course_level_name\` varchar(200) DEFAULT NULL COMMENT \' 關卡名稱(枚舉)\',
\`curriculum_order\` varchar(50) DEFAULT NULL COMMENT \'業務系統課次序號\',
\`curriculum_id\` varchar(50) DEFAULT NULL COMMENT \'業務系統課次ID\',
\`classLevel_id\` varchar(50) DEFAULT NULL COMMENT \'班型ID\',
\`teacher_avatar\` varchar(200) DEFAULT NULL COMMENT \'老師頭像url\',
\`picture_url\` varchar(200) DEFAULT NULL COMMENT \'圖片url\',
\`study_report_flag\` varchar(50) DEFAULT NULL COMMENT \'學習報告標識\',
\`teacher_id\` varchar(50) DEFAULT NULL COMMENT \'老師id\',
\`teacher_name\` varchar(200) DEFAULT NULL COMMENT \'老師名稱\',
\`remind_content\` varchar(500) DEFAULT NULL COMMENT \'提醒內容\',
\`btn_status\` varchar(20) DEFAULT \'N\' COMMENT \'按鈕的激活狀態,Y:已經點擊,N:未點擊\',
\`is_show\` varchar(20) DEFAULT \'1\' COMMENT \'1:顯示,2:不展示\',
\`ext_task_name\` varchar(200) DEFAULT NULL COMMENT \'IPS規劃師任務名稱\',
PRIMARY KEY (\`msg_id\`),
KEY \`messageIndex\` (\`student_id\`),
KEY \`appMsgIdIndex\` (\`app_message_id\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;' );
SELECT sql_text;
SET @sql_text=sql_text;
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET i=i+1;
END WHILE;
END$$
DELIMITER ;
出現的問題:
int類型的數據轉換為字符型使用:CONCAT(i, '')。