mysql 光标使用

2021/8/25 19:36:11

本文主要是介绍mysql 光标使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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 ;

 



这篇关于mysql 光标使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程