1. 程式人生 > >mysql 儲存過程 有資料修改 沒資料插入

mysql 儲存過程 有資料修改 沒資料插入

BEGIN
  DECLARE sid INT(10) DEFAULT  0;
  DECLARE money INT(10) DEFAULT  0;
  DECLARE row_count INT;
  DECLARE done INT DEFAULT FALSE;#預設遊標讀出有記錄
  DECLARE cur_order CURSOR  for  
    SELECT m.id,sum(o.price) money from ims_bj_shopn_order as o LEFT JOIN ims_bj_shopn_member as m on o.uid=m.id where o.status in ('1','2','3','6','7') and (m.isadmin=1 or m.id=m.staffid) and o.createtime BETWEEN 1514736000 and 1546271999  GROUP BY o.uid ORDER BY money desc;
    
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;-- 繫結控制變數到遊標,遊標迴圈結束自動轉true #select cur_order; open cur_order;-- 開啟遊標 myLoop:LOOP -- 開始迴圈體,myLoop為自定義迴圈名,結束迴圈時用到 FETCH cur_order INTO sid,money; -- 將遊標當前讀取行的資料順序賦予自定義變數 IF done THEN -- 判斷是否繼續迴圈 LEAVE myLoop;
-- 結束迴圈 END IF; -- 自己要做的事情,在 sql 中直接使用自定義變數即可 SELECT count(*) INTO row_count from think_purchase_amount where sellerid=sid; IF (row_count=0) THEN INSERT INTO think_purchase_amount(sellerid,count,year) VALUES(sid,money,2018);      
ELSE UPDATE think_purchase_amount SET count=count+money,year=2018 WHERE sellerid=sid; END IF; END LOOP myLoop;-- 結束自定義迴圈體 CLOSE cur_order;-- 關閉遊標 END