(原)mysql 存储过程 if - else if - else 嵌套

模板


BEGIN

        IF  条件  THEN

                IF 条件 THEN 

                ELSEIF 条件 THEN

                ELSEIF 条件 THEN

                ELSE 

                END If;



        ELSE 
                IF 条件 THEN 

                ELSEIF 条件 THEN

                ELSEIF 条件 THEN

                ELSE 

                END If;
         END IF
 
END

 


 

CREATE DEFINER = 'root'@'localhost'
PROCEDURE logistics.p_scan_task(IN  v_billId varchar(255) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci, IN  v_courierUserId varchar(255) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci, OUT v_Err_Msg  varchar(255))
BEGIN
	DECLARE v_BillStatus varchar(255);
	DECLARE v_Userid varchar(255);
  DECLARE v_status varchar(255);

  DECLARE v_pay_status varchar(255);
  DECLARE v_pay_cost varchar(255);

	SELECT bill_status,courier_user_id,status,pay_status, pay_cost FROM platform_lading_bill WHERE bill_id=v_billId INTO v_BillStatus, v_Userid, v_pay_status , v_pay_cost;

  IF v_pay_status = '1' THEN
      
          IF  v_BillStatus='3' AND v_status='0' AND v_Userid IS NULL THEN  
        			UPDATE platform_lading_bill SET bill_status='7', status='1' , courier_user_id=v_courierUserId  WHERE bill_id=v_billId  ;  		
            	SET v_Err_Msg = CONCAT('{"state":0,"msg":"Посылка готова, скоро отправиться!"}');##取件成功,准备派送
        
        	ELSEIF v_BillStatus='7'  AND v_status='1' AND v_Userid IS NOT NULL AND v_Userid = v_courierUserId THEN 
        			UPDATE platform_lading_bill SET bill_status='8', status='1' , courier_user_id=v_courierUserId  WHERE bill_id=v_billId  ;
            	SET v_Err_Msg = CONCAT('{"state":0,"msg":"Уже отправлена, пользователь получил!"}') ;##派送已完成,用户已收货
         
          ELSEIF v_BillStatus='10'  AND v_Userid IS NOT NULL AND v_Userid = v_courierUserId THEN   		
            	SET v_Err_Msg = CONCAT('{"state":0,"msg":"Пользователь отказал в получении!"}') ;##用户已拒收       
 
          
          ELSE   
            SET v_Err_Msg = CONCAT('{"state":0,"msg":"Правильно отсканируйте трекинг-номер!"}') ;##请正确扫描物流单号
          END IF;
 	ELSE
        
        	SET v_Err_Msg = CONCAT('{"state":0,"msg":"未支付","data":{"billInfo":[{"courierUserId":"',v_courierUserId,'","pay_cost":"',v_pay_cost,'","pay_status":"',v_pay_status,'"}]}}') ;##未支付
       END IF;
END

 

你可能感兴趣的:(#,MySQL)