mysql 存储过程 null的处理
BEGIN
-- 客户等级id
DECLARE level_id LONG;
-- 客户等级name
DECLARE level_name VARCHAR(50);
-- 当月总发货量
DECLARE totalFrght DECIMAL;
-- 对应客户表中的acc_id
DECLARE accId LONG;
-- 遍历数据结束标志
DECLARE done INT DEFAULT 0;
-- 游标
DECLARE cur CURSOR FOR SELECT v.COST_TOTALFRGHT ,v.ACC_ID -- FORMAT(v.COST_TOTALFRGHT/10000,2)
FROM mdm_ct_customer c LEFT JOIN v_mdm_customer_invoice_account v ON v.ACC_ID = c.ACC_ID
WHERE c.CUSTOMER_TYPE = 'customer_type_vipkh';-- <> 'customer_type_yskh';
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT found SET done=1;
-- 打开游标
OPEN cur;
-- 循环
read_loop: LOOP
-- 提取游标里的数据
FETCH cur INTO totalFrght,accId;
-- 声明声明时候结束
IF done = 1 THEN
LEAVE read_loop;
END IF;
-- 根据客户当月发货总金额计算客户等级
SELECT m.CUSTOME_LEVEL__NREC_ID,m.LEVEL_NAME INTO level_id,level_name FROM mdm_ct_customer_level_nrec m
WHERE m.MIN_LEVEL <= totalFrght and m.MAX_LEVEL > totalFrght;
-- 如果有客户等级,再修改
IF level_id IS NOT NULL THEN
-- 根据accid 修改对应客户的等级和名称
UPDATE mdm_ct_customer c SET c.CUSTOMER_LEVEL_TYPE = level_name,c.CUSTOME_LEVEL__NREC_ID =level_id
WHERE c.ACC_ID = accId;
END IF;
-- 结束循环
END LOOP;
-- 关闭游标
CLOSE cur;
END
上边的 level_id,level_name 查出来有可能 是空,我想判断下,如果是空,就不修改下边的,但是这句不起作用,IF level_id IS NOT NULL THEN,现在如果 level_id 是空的话,直接就跳出循环了。。求大神指教。。。