您的位置 首页 java

java总结:3.写存储过程中的语法和步骤

 1.存储实例:
delimiter $$
drop  PROCEDURE if EXISTS create_log;
CREATE PROCEDURE create_log()
BEGIN
         -- 定义变量
         DECLARE tableName VARCHAR(300);
          DECLARE  lp_flag boolean DEFAULT TRUE;
          -- 定义一个游标
         DECLARE group_list CURSOR FOR
         SELECT CONCAT('sg_event_track_log_',group_id) table_names from sg_group  WHERE state=1 union all SELECT 'sg_event_track_log';

         DECLARE CONTINUE HANDLER FOR 1329 SET lp_flag=FALSE;

         -- 打开
         open group_list;
                  group_loop:LOOP
                     -- 循环获取
                    FETCH  group_list INTO tableName;
                       IF lp_flag THEN
                            SET @STMT :=CONCAT("alter table `",tableName,"` add  material_type int DEFAULT NULL COMMENT '素材类型:1图片类型 2视频类型 5附码图片';");
                            PREPARE STMT FROM @STMT;
                            EXECUTE STMT;

                        ELSE LEAVE group_loop;
                        END IF;

                  END loop group_loop;
         -- 关闭
         CLOSE group_list;
END$$

CALL create_log();
drop  PROCEDURE if EXISTS create_log;
2.分析步骤
      2.1:首先创建方法和存储体
      CREATE PROCEDURE create_log() //方法名
     //方法体
      BEGIN

      END

      2.2:定义变量 //采用DECLARE定义变量,类型放在最后,可以设置默认值,也可以不设置默认值
         DECLARE tableName VARCHAR(300);
         DECLARE lp_flag boolean DEFAULT TRUE;

      2.3:定义游标循环取查询出的内容;
        1.DECLARE group_list CURSOR FOR 加sql语句
        2.open group_list;//打开
        3.FETCH group_list INTO 自定义变量名;//循环拿去查询的结果数据
        4. CLOSE group_list;//关闭

     2.4:定义拿不到数据产生的bug变量
         DECLARE CONTINUE HANDLER FOR 1329 SET lp_flag=FALSE;

    2.5:定义循环:
         group_loop:LOOP

             END loop group_loop;
    2.4:定义if判断:
         IF lp_flag THEN   代码   //如果为true执行业务;
         ELSE LEAVE group_loop;//或者跳出循环;
                            END IF;


  
  

文章来源:智云一二三科技

文章标题:java总结:3.写存储过程中的语法和步骤

文章地址:https://www.zhihuclub.com/196326.shtml

关于作者: 智云科技

热门文章

网站地图