mysql 存儲過程 CONCAT 字符串拼接


 

 

mysql 存儲過程

 

CREATE  PROCEDURE  pro_province_report (IN startDate VARCHAR(20),IN endDate VARCHAR(20),IN SourceType INT)  
     /*
    功能:根據時間,來源SourceType 
        統計 每個省份的 注冊用戶 投稿數 作品點擊量 投票量 參與人數 
     pro_province_report();
    */

  BEGIN  
   
  DECLARE temp_user_sql VARCHAR(500);
  DECLARE temp_works_sql VARCHAR(500); 
  #條件
  DECLARE dateStr VARCHAR(100); 
  DECLARE dateStr_w VARCHAR(100); 
  #來源條件
  DECLARE sourceStr VARCHAR(100);
  DECLARE sourceStr_w VARCHAR(100);
 
  IF(startDate!=''&&endDate!='') THEN
        SET dateStr=CONCAT( ' AND DATE(addDate)>=DATE("',startDate,'") AND DATE(addDate)<=DATE("',endDate,'")' );
        SET dateStr_w=CONCAT( ' AND DATE(w.addDate)>=DATE("',startDate,'") AND DATE(w.addDate)<=DATE("',endDate,'")' );
  ELSE
        SET dateStr=" AND 1=1 ";
        SET dateStr_w=" AND 1=1 ";
  END IF;

  IF(SourceType>0) THEN
        SET sourceStr=CONCAT(' AND SourceType="',SourceType,'" ');
      SET sourceStr_w=CONCAT(' AND w.SourceType="',SourceType,'" ');
  ELSE
        SET sourceStr=" AND 1=1 ";
        SET sourceStr_w=" AND 1=1 ";
  END IF;

   
  #用戶注冊 臨時表 

  DROP TEMPORARY TABLE IF EXISTS memberUserTemp;
  SET temp_user_sql =CONCAT('CREATE TEMPORARY TABLE memberUserTemp
  SELECT COUNT(1) accountSum,provinceID,province FROM MEMBERUSER WHERE provinceID>0 ',dateStr,sourceStr,' GROUP BY provinceID');         
  DROP TEMPORARY TABLE IF EXISTS memberUserTemp;

   set @temp_user_sql=temp_user_sql;   #將連成成的字符串賦值給一個變量(可以之前沒有定義,但要以@開頭)
   prepare stmt from @temp_user_sql;  #預處理需要執行的動態SQL,其中stmt是一個變量
   EXECUTE stmt;      #執行SQL語句
   deallocate prepare stmt;    #釋放掉預處理段
  #投稿數 臨時表 
  SET temp_works_sql=CONCAT('CREATE TEMPORARY TABLE worksTemp
  SELECT COUNT(1) worksSum,provinceID,province FROM WORKS  WHERE provinceID>0 ',dateStr,sourceStr,' GROUP BY provinceID');
  DROP TEMPORARY TABLE IF EXISTS worksTemp;  
   set @temp_works_sql=temp_works_sql;    
   prepare stmt from @temp_works_sql;   
   EXECUTE stmt;    
   deallocate prepare stmt;   
 

  END 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM