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

tttt080 2012-07-24 07:56:39
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语句!
...全文
805 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-07-25
  • 打赏
  • 举报
回复
楼主可能参考一下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
tttt080 2012-07-24
  • 打赏
  • 举报
回复
@@fetch_status是MSSQL的一个全局变量,不是mysql的全局变量,那么mysql怎么去判断取得游标的值是否正确呢,有什么方法验证???
tttt080 2012-07-24
  • 打赏
  • 举报
回复
哈哈 写错了
tttt080 2012-07-24
  • 打赏
  • 举报
回复
ok!!!!!!!!!!!!

56,951

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧