如何在mysql存储过程中处理select语句返回的多行结果

如题所述

第1个回答  2017-11-30
CREATE PROCEDURE curdemo()BEGIN DECLARE done INT DEFAULT 0; DECLARE a CHAR(16); DECLARE b,c INT; DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1; DECLARE cur2 CURSOR FOR SELECT i FROM test.t2; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur1; OPEN cur2; REPEAT FETCH cur1 INTO a, b; FETCH cur2 INTO c; IF NOT done THEN IF b < c THEN INSERT INTO test.t3 VALUES (a,b); ELSE INSERT INTO test.t3 VALUES (a,c); END IF; END IF; UNTIL done END REPEAT; CLOSE cur1; CLOSE cur2;END

如何在mysql存储过程中处理select语句返回的多行结果
如果对select 返回的结果行都需要处理,使用游标。如果只想取得返回多行中的一行,使用limit。

求助大神 mybatis 使用Mysql 的存储过程 怎么返回多个结果集
如果对select 返回的结果行都需要处理,使用游标。如果只想取得返回多行中的一行,使用limit。

mysql 里面如何处理子查询返回多个查询结果的情况
select id,name,age,sex,punch1from test0where id in --等号改成in(select id from test1where flag = 0 );

mybatis调用mysql存储过程(返回参数,单结果集,多结果集)
mybatis调用mysql存储过程(返回参数,单结果集,多结果集)注: RETCODE、RETDESC 这里的输出值不用在函数里 SELECT RETCODE; ,因为即使没有,当执行成功后会自动返回在对象里(Object\/Map),所以在函数里不用SELECT一下了。Navicat中执行函数需要输入参数值,也是对应图1,@A@B表示输出值。(一个输...

mysql存储过程的if判断有多个条件该怎么优化效率
1 修改 sync_binlog为一个100-1000间的值,让binlog每隔100-1000个事务后再写一次;修改innodb_flush_log_at_trx_commit =2; 这么搞的好处是降低了写log的次数和消耗的时间,缺点是,中间出错的话,会丢失一部分的binlog和redolog导致无法通过他们来在出问题是恢复生产库数据。2 将所有的插入\/...

如何使mysql关联查询返回结果集中相同字段不同数据只返回一条
select from table ###where not exists (select * from table ###where # = #and ## < ##)在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的...

MYSQL 存储过程能返回结果集吗
可以,存储过程只是把你的查询语句形成一个固定的格式,这样你要查询的时候就不用每次都执行查询语句了,sql在执行的时候都会将你的sql语句转换为字节码,然后机器才能运行,存储过程就节省了这一步,已经形成了字节码,所以速度才会快,特别是执行次数比较多的时候,可以节省很多时间 ...

mysql中的存储过程能返回数组么
mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。mysql中存储过程的例子:CREATE PROCEDURE addvoucher (IN userid INT,IN voucherid INT,OUT result INT )BEGIN SELECT endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,isdead_a := isdead FROM t_voucher...

SQL存储过程如何调用存储过程?
1、首先先创建一个存储过程,代码如图,存储过程主要的功能是为表JingYan插入新的数据。2、执行这几行代码,看到执行成功,数据库里现在已经有存储过程sp_JY。3、先看下JingYan表里目前的数组,如图,只有三行数据。4、在mysql里,调用存储过程,只需要用call关键字,带上存储过程的名称就行了,当然有...

mysql 进:在存储过程中用select 如何给变量赋值
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。SELECT id,data INTO x,y FROM test.t1 LIMIT 1;注意,用户变量名在MySQL 5.1中是对大小写不敏感的。请参阅9.3节,“用户变量”。重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考...

相似回答