案例1:
BEGIN
-- 行驶证ID变量DECLARE tl_id varchar(50);
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标 查询出不存在车辆在行驶证中的数据
DECLARE cur CURSOR FOR select a.id from t_veh_road_trans_license a where not exists (select 1 from t_vehicle b where b.vehicle_id=a.vehicle_id);
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据并into给tl_id
FETCH cur INTO tl_id;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 删除无效行驶证数据
delete from t_veh_road_trans_license where id=tl_id;
END LOOP;
-- 关闭游标
CLOSE cur;
END
BEGIN
-- 定义接收游标数据的变量
DECLARE tl_id varchar(50);
DECLARE tl_license_no varchar(50);
DECLARE bExist int DEFAULT 0;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标 查询出带有*号的运输证编号数据
案例2:
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据
FETCH cur INTO tl_id,tl_license_no;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 根据运输证跟车辆ID查询车辆是否存在 ,不存在返回0 ,去除带有*号的运输证件编号中的*号字符,REPLACE先将*替换为空格,然后LTRIM去除前空格
select count(*) into bExist from t_vehicle a where exists(select 1 from t_veh_road_trans_license b where b.vehicle_id=a.vehicle_id and b.license_no=LTRIM(REPLACE (tl_license_no,' ','*')));
if bExist=0 then
delete from t_veh_road_trans_license where id=tl_id ;
update t_veh_road_trans_license set license_no=LTRIM(REPLACE (tl_license_no,' ','*')) where license_no=tl_license_no ;
end if;
END LOOP;
-- 关闭游标
CLOSE cur;
END