mysql 游标子查询_155.mysql 游标

本文介绍了一个使用SQL游标的示例,通过声明变量并利用游标遍历数据库表中的记录,根据不同条件进行数据的标记与插入操作。

-- 定义变量

DECLARE jobId varchar(500); -- id

DECLARE jobName varchar(500); -- id

DECLARE jobDepName varchar(500); -- 栏目

DECLARE jobDesc varchar(500); -- 创建时间

DECLARE flagIndex varchar(500); -- 序号

DECLARE done INT;  -- 必须要

-- 创建游标,并存储数据

DECLARE cursor_test CURSOR FOR

select id AS jobId,job_name as jobName,job_belongtodep_name as  jobDepName,job_desc as jobDesc from  t_job;

-- 游标中的内容执行完后将done设置为1

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

-- 打开游标

OPEN cursor_test;

-- 执行循环

posLoop:LOOP

-- 判断是否结束循环

IF done=1 THEN

LEAVE posLoop;

END IF;

-- 取游标中的值

FETCH  cursor_test INTO jobId,jobName,jobDepName,jobDesc;

-- 进行判断的条件准备

select  `index` into flagIndex  from    t_job t1 where  t1.id= jobId;

-- 执行插入操作

IF(flagIndex<10)  THEN --  执行update操作

-- 标记  优秀

insert into t_job_cursor_test (indexid,id,name,depname,descs,inserttime,flag) values                      (flagIndex,jobId,jobName,jobDepName,jobDesc,SYSDATE(),'优秀');

else -- 执行insert操作

-- 标记  一般

insert into t_job_cursor_test (indexid,id,name,depname,descs,inserttime,flag) values (flagIndex,jobId,jobName,jobDepName,jobDesc,SYSDATE(),'一般');

END IF;

END LOOP posLoop;

-- 释放游标

10-16
select distinct workpaper0_.id as id1_129_, workpaper0_.created_by as created_2_129_, workpaper0_.created_time as created_3_129_, workpaper0_.last_modified_by as last_mod4_129_, workpaper0_.last_modified_time as last_mod5_129_, workpaper0_.filter_path as filter_p6_129_, workpaper0_.adjust_count as adjust_c7_129_, workpaper0_.is_adjusting as is_adjus8_129_, workpaper0_.approval_opinion as approval9_129_, workpaper0_.approval_status as approva10_129_, workpaper0_.flow_handler_id as flow_ha11_129_, workpaper0_.flow_handler_name as flow_ha12_129_, workpaper0_.actual_duration as actual_13_129_, workpaper0_.audit_conclusion as audit_c14_129_, workpaper0_.audit_procedure as audit_p15_129_, workpaper0_.audit_situation as audit_s16_129_, workpaper0_.audit_type_id as audit_t17_129_, workpaper0_.audit_type_name as audit_t18_129_, workpaper0_.code as code19_129_, workpaper0_.is_exist_issue as is_exis20_129_, workpaper0_.name as name21_129_, workpaper0_.planned_duration as planned22_129_, workpaper0_.project_id as project26_129_, workpaper0_.project_audit_item_names as project23_129_, workpaper0_.project_audit_item_type_id as project27_129_, workpaper0_.status as status24_129_, workpaper0_.writer_user_names as writer_25_129_ from mt_audit_work_paper workpaper0_ inner join mt_audit_project project1_ on workpaper0_.project_id = project1_.id left outer join mt_audit_work_paper_issue issues2_ on workpaper0_.id = issues2_.work_paper_id left outer join mt_audit_issue issue3_ on issues2_.issue_id = issue3_.id left outer join mt_audit_issue_project_auditee issueproje4_ on issue3_.id = issueproje4_.issue_id where project1_.state = $1 and (issueproje4_.unit_name like $2) and project1_.id = $4 order by workpaper0_.created_time desc limit $3 这个SQL怎么优化
最新发布
12-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值