mysql存储过程在实际开发中怎么用_MYSQL存储过程开发中怎么使用游标嵌套
mysql存储过程开发中如何使用游标嵌套
在实际业务逻辑开发中,难免用到游标嵌套,举例如下:
delimiter //
drop procedure if exists good_nested_cursors1
//
CREATE PROCEDURE good_nested_cursors1( )
READS SQL DATA
BEGIN
DECLARE l_grade_id INT;
DECLARE l_class_id INT;
DECLARE l_class_cnt INT DEFAULT 0 ;
DECLARE l_done INT DEFAULT 0;
DECLARE grade_csr cursor FOR SELECT grade_id FROM org_grade;
DECLARE class_csr cursor FOR SELECT class_id FROM org_class WHERE grade_id=l_grade_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_done=1;
OPEN grade_csr;
grade_loop: LOOP -- Loop through org_grade
FETCH grade_csr into l_grade_id;
select concat('年级:', l_grade_id);
IF l_done=1 THEN
LEAVE grade_loop;
END IF;
OPEN class_csr;
SET l_class_cnt=0;
class_loop: LOOP -- Loop through class in grade.
FETCH class_csr INTO l_class_id;
IF l_done=1 THEN
LEAVE class_loop;
END IF;
SET l_class_cnt=l_class_cnt+1;
select concat(' 班级:', l_class_id);
END LOOP;
CLOSE class_csr;
SET l_done=0;
END LOOP grade_loop;
CLOSE grade_csr;
END;
//
delimiter ;
///
//另一个例子:
CREATE PROCEDURE curdemo()
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare done1,done2 int default 0;
declare name1,name2 varchar(20);
declare id1,id2 int;
declare cur1 cursor for select id,name from test1;
declare continue handler for not found set done1 = 1;
open cur1;
repeat
fetch cur1 into id1, name1;
if not done1 then
insert into test3(name) values(name1);
begin
declare cur2 cursor for select id,name from test2;
declare continue handler for not found set done2 = 1;
open cur2;
repeat
fetch cur2 into id2,name2;
if not done2 then
insert into test3(name) values(name2);
end if;
until done2 end repeat;
close cur2;
set done2=0;
end;
end if;
until done1 end repeat;
close cur1;
commit;
END;
///
以上代码由达人礼品网提供
1楼aeolus_pu昨天 22:50
游标嵌套效率不太好吧
微信 赏一包辣条吧~
支付宝 赏一听可乐吧~
mysql存储过程在实际开发中怎么用_MYSQL存储过程开发中怎么使用游标嵌套相关推荐
- mysql存储过程中怎么打印_mysql存储过程怎么打印
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Mysql提示缺少表的别名报错_mysql对sql中别名引起的Column not found问题
Caused by: java.sql.SQLException: Column 'BTN_ICON' not found. 报错信息是找不到表中的某字段,但是表里确确实实有这个字段. 这个问题,在百 ...
- mysql 截取逗号并形成新的字段_MySQL将一个字段中以逗号分隔的取出来形成新的字段实现...
1例如:要把如图1的字段拆分图2 select account_id, substring_index(substring_index(a.related_shop_ids,"," ...
- mysql存储过程的返回值在哪里设置_MySQL存储过程的返回值
我必须创建一个SP,如果它有效,则返回一个值.但它不返回任何东西,我不知道,为什么? CREATE DEFINER=`root`@`localhost` PROCEDURE `validar_egre ...
- mysql开发要注意什么_Mysql日常开发注意要点
1.MySQL存储引擎介绍 MyISAM:低版本MySQL默认的MySQL插件式存储引擎,存储文件易损坏,不支持事务. InnoDB:目前默认的MySQL存储引擎,用于事务处理应用程序,具有众多特性, ...
- mysql表中字段数据类型_mysql数据表中字段的数据类型有哪些?
数据表中字段的数据类型有:TINYINT.SMALLINT.MEDIUMINT.INT.INTEGE.DATETIME.DATE.TIMESTAMP.TIME.YEAR.CHAR.VARCHAR.TE ...
- mysql执行字符串sql结果复制被变量_mysql存储过程-执行字符串变量的sql
SET @xx="name,bm"; SET @sql1 = CONCAT('select ',@xx,' from people'); prepare s1 from @sql1 ...
- mysql 存储过程如何声明多个变量赋值_mysql存储过程:定义变量,赋值,判断,输出...
1.定义变量,赋值,判断,输出 DROP PROCEDURE IF EXISTS proc_first; -- 如果proc_first存在就删除 create procedure proc_firs ...
- mysql 中like用法_mysql查询语句中like 的用法
1.常见用法: (1)搭配%使用 %代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据: (2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一 ...
最新文章
- 4固定在底部_自建房不搭彩钢棚,4根钢结构撑个玻璃棚遮风挡雨,上面多个露台...
- spring应用实例
- Redis宕机数据丢失解决方案,不吃透都对不起自己
- Transaction 那点事儿,Spring事务管理
- AngularJS之页面跳转Route
- 使用C语言在windows下一口气打开一批网页
- 论MySQL的监控和调优
- Select2 鼠标点击空白处不消失简单测试和解决方法
- 已知两点坐标求水平距离_知道两个点的坐标X,Y,如何计算出两点间的距离以及角度,公式是什么...
- Qt之切换语言的方法(传统数组法与Qt语言家)
- 单片机学习——看门狗
- vscode之 wget下载zip文件并unzip解压zip文件
- java 对象数据映射_SpringMVC中json数据映射为java对象的坑
- 实话实说,现在的结婚,真就是走个形式!
- 官网http 499问题排障
- Unity3D Shader 新手教程(5/6) —— Bumped Diffuse Shader
- 浅谈iOS中关于app的优化
- centos7安装twisted出现“致命错误:Python.h:没有那个文件或目录”的终极解决办法
- 区分有状态和无状态组件
- 常见面试题 | Spring AOP 实现原理