MySQL 存储过程中游标的循环输出

xiaoyang344430256 2009-04-17 04:41:54
DELIMITER $$

DROP PROCEDURE IF EXISTS `getData` $$
CREATE PROCEDURE `getData`(out a1 char(5),out a2 varchar(20),out a3 char(5))
BEGIN

declare done int default 0;
declare num char(5);
declare s_name varchar(20);
declare s_course char(5);
declare stu_data cursor for

select s.student_id,s.name,st.course_id
from student s left join (select student_id,course_id
from clazz
group by student_id
)as st
on s.student_id = st.student_id
order by student_id asc;

declare continue handler for not found set done = 1;





/*-------------open cursor------------*/
open stu_data;
cursor_loop:loop
fetch stu_data into a1,a2,a3;

select a1,a2,a3 into outfile 'c:a.txt';
/*---------loop--------*/
if done=1 then
leave cursor_loop;
end if;
end loop cursor_loop;

close stu_data;


END $$

DELIMITER ;



1.怎么样才能用一个列把所有数据显示出来。
2.当我outfile时怎么养才能追加数据呢,现在是写完第一个数据后就报错“c:a.txt is exits”;
...全文
444 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rienzi 2010-04-24
  • 打赏
  • 举报
回复
同学们,乃们也给了我思路和灵感,多谢了
xiaoyang344430256 2009-04-29
  • 打赏
  • 举报
回复
你给了我思路·但我是用concat做出来的··只能以一行输出全部数据,不能像查询表那样多行输出么?!很郁闷····
yangxiao_jiang 2009-04-21
  • 打赏
  • 举报
回复
为什么多余,这样只写一次文件,你那样要循环写多次相同的文件。
xiaoyang344430256 2009-04-21
  • 打赏
  • 举报
回复
错误倒没有,就是用var1纯属多余,和以前的效果一样,没什么改进。
yangxiao_jiang 2009-04-21
  • 打赏
  • 举报
回复
什么错误?
xiaoyang344430256 2009-04-21
  • 打赏
  • 举报
回复
不成
yangxiao_jiang 2009-04-17
  • 打赏
  • 举报
回复
这个是因为你已经有文件了,你可以先定义一个变量去接受a1,a2,a3,最后把这个变量写到文件中。
DECLARE var1 varchar(1000)
fetch stu_data into a1,a2,a3;

set var1=var1+a1+a2+a3;

最后在

select var1 into outfile 'c:a.txt';



5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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