今日用到了mysql,于是对其游标调查了一番,感觉和oracle的用法大同小异。下面是个小例子。
1.创建procedure。
create myProc()
begin
declare selYear varchar(4);
declare startTime datetime;
declare cur1 CURSOR FOR (select start_year from testTable);
#这点需要注意
#mysql 需要用异常来判断是否循环终了。
#异常时,把变量selYear设为 null 跳出循环。
#类似oracle的 NO_DATA_FOUND
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET selYear = null;
#开始时间
set startTime = now();
OPEN cur1;
fetch cur1 into selYear;
while(selYear is not null) do
#可以在这里做一些动作
....
fetch cur1 into selYear;
end while;
CLOSE cur1;
#查看执行时间
select now() - startTime;
end
2.调用方法
call myProc();
另:我用终端MySQLQueryBrowser新建一个script,想调试一下,但调试不通过。报语法异常,可能是不支持该用法,也可能是我用法不对,没有深究。