mysql http://yaojialing.iteye.com/blog/773973

delimiter $$

Pattern p = Pattern.compile("^\\[(\\d(\\.\\d)?|10),(\\d(\\.\\d)?|10)\\]");

########################################################################
# xxxx
# 对表xxx表预处理,
# 生成导出临时表xxxx
# author: xxx
########################################################################

drop  procedure if exists xxxx; $$                                           
create procedure xxxx
(
in  inStrParam1  varchar(128),       #开始时间
in  inStrParam2  varchar(128),       #结束时间
in  inStrParam3  varchar(1024),      #其他查询条件    
out rstIntParam int,
out rstStrParam varchar(2048)

lab_top:   
begin                                                                                              
    #声明
    declare ERROR_CODE   int default 1;  #执行错误返回码
    declare SUCCESS_CODE int default 0;  #执行成功返回码
    declare PROT_CATEGORY_NAME    VARCHAR(100) default NULL;
  declare PROT_TYPE_NAME    VARCHAR(100) default NULL;
   
    declare exception int default 0;
    declare continue handler for SQLEXCEPTION set exception = 1;
   
    #初始化返回值
    set rstIntParam = SUCCESS_CODE;
    set rstStrParam = "";
   
    #判断输入参数,开始时间和结束时间是必选
    if inStrParam1 is null or inStrParam1 = ""
    or inStrParam2 is null or inStrParam2 = "" then
          set rstIntParam = ERROR_CODE;
          set rstStrParam = "Error happened in xxxx at 01.";
    end if;
   
   
    drop table if exists xxxx;
    create table xxxx like xxxx;
   
    call sp_comm_add_field("xxxx","PROT_CATEGORY_NAME",100,PROT_CATEGORY_NAME);
  call sp_comm_add_field("xxxx","PROT_TYPE_NAME",100,PROT_TYPE_NAME);
   
    if rst != SUCCESS_CODE then
        set rstIntParam = ERROR_CODE;
        set rstStrParam = concat("Error happened in xxxx at 02.");
        leave lab_top;
    end if;
   
    #增加临时表
    #drop table if exists xxxx;
    #create table xxxx like xxxx;

    #检查是否异常
    if exception then
        set rstIntParam = ERROR_CODE;
        set rstStrParam = "Error happened in xxxx at 03.";
        leave lab_top;
    end if;
   
   
    insert into xxxx
    (
      STARTTIME,
      PROT_CATEGORY_NAME,
      PROT_TYPE_NAME,
      UL_THROUGHPUT,
      DW_THROUGHPUT,
      THROUGHPUT_TOTAL,
      UL_PACKETS,
      DW_PACKETS,
      USERNUM_TOTAL
    )
    select
      STARTTIME,
      PROT_CATEGORY_NAME,
      PROT_TYPE_NAME,
      UL_THROUGHPUT,
      DW_THROUGHPUT,
      THROUGHPUT_TOTAL,
      UL_PACKETS,
      DW_PACKETS,
      USERNUM_TOTAL
    from xxxx INNER JOIN xxxx ON
    xxxx.PROT_CATEGORY_ID=xxxx.PROT_CATEGORY_ID
    INNER JOIN xxxx ON xxxx.PROT_TYPE_ID=xxxx.PROT_TYPE_ID
  where STARTTIME BETWEEN '2012-01-01' AND '2013-01-01' ;
                
end lab_top; $$                                                                 
delimiter; $$                                                             

原文地址:https://www.cnblogs.com/standy225/p/2935046.html