DROP PROCEDURE
IF EXISTS `InitFactorSignal`;
DELIMITER ;;
CREATE PROCEDURE `InitFactorSignal`()
BEGIN
DECLARE t_error INTEGER DEFAULT 0;
DECLARE v_id VARCHAR(255);
DECLARE d_factor DECIMAL(5,2);
DECLARE d_startdate datetime;
DECLARE d_enddate datetime;
DECLARE cur_factor CURSOR FOR SELECT cid, cstarttime,cendtime,cfactornum from tb_plo_artificialfactor;
DECLARE EXIT HANDLER FOR NOT FOUND CLOSE cur_factor;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;
open cur_factor;
REPEAT FETCH cur_factor into v_id, d_startdate,d_enddate,d_factor;
INSERT INTO `efquantitativetrading`.`tb_plo_factorsignal`(`cid`, `cuorgcode`, `ccreatorid`, `ccreatetime`, `clastupdateuserid`, `clastupdatetime`, `cartificialfactorid`, `csignaldatetime`, `cfactornum`)
VALUES (replace(uuid(), '-', ''), NULL, NULL, NULL, NULL, NULL, v_id, d_startdate, d_factor);
INSERT INTO `efquantitativetrading`.`tb_plo_factorsignal`(`cid`, `cuorgcode`, `ccreatorid`, `ccreatetime`, `clastupdateuserid`, `clastupdatetime`, `cartificialfactorid`, `csignaldatetime`, `cfactornum`)
VALUES (replace(uuid(), '-', ''), NULL, NULL, NULL, NULL, NULL, v_id, date_add(d_enddate, interval 1 second) , 0);
UNTIL 0 END REPEAT;
close cur_factor;
IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
select t_error;
END
;;
DELIMITER ;