一个存储过程中FETCH_STATUS有关问题?

  • 内容
  • 评论
  • 相关

一个存储过程中FETCH_STATUS问题????



注意:如需评论后运行请重新刷新页面,谢谢您搞代码学习知识

delimiter //
drop FUNCTION if exists tests//
create FUNCTION tests() RETURNS varchar(30)
BEGIN
declare st1 VARCHAR(30) default '0'; 
declare st2 VARCHAR(30) default '0';
declare st3 VARCHAR(30) default '0';
declare cursor1 cursor for select address,city from persons;
FETCH next from cursor1 into st2,st3;
 while @@FETCH_STATUS = 0 DO
  SET st1 = CONCAT (st2,st3);
  end while;
close cursor1;  

RETURN st1;
END //
deallocate cursor1;
delimiter ;
#运行提示unknown system variable FETCH_STATUS 
#以上是mysql语句!

------解决方案--------------------
楼主可能参考一下MYSQL官方免费手册中的例子如下。

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 NOT FOUND 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

原创文章,转载请注明: 转载自搞代码

本文链接地址: 一个存储过程中FETCH_STATUS有关问题?

微信支付二维码

微信 赏一包辣条吧~

支付宝支付二维码

支付宝 赏一听可乐吧~

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注