create procedure p1()
begin
declare id int;
declare name varchar(15);
-- 聲明游標
declare mc cursor for select * from class;
-- 打開游標
open mc;
-- 獲取結果
fetch mc into id,name;
-- 這里是為了顯示獲取結果
select id,name;
-- 關閉游標
close mc;
end;
create procedure p2()
begin
declare id int;
declare name varchar(15);
-- 聲明游標
declare mc cursor for select * from class;
-- 打開游標
open mc;
-- 獲取結果
loop -- 循環,將表的內容都轉移到class2中
fetch mc into id,name;
-- 這里是為了顯示獲取結果
insert into class2 values(id,name);
-- 關閉游標
end loop;
close mc;
end;
使用游標:
游標每一次fetch都是獲取一行結果,可以使用變量來獲取fetch到的每一列的值
create procedure p2()
begin
declare id int;
declare name varchar(15);
-- 聲明游標
declare mc cursor for select * from class;
-- 打開游標
open mc;
-- 獲取結果
loop -- 循環,將表的內容都轉移到class2中
fetch mc into id,name;
-- 這里是為了顯示獲取結果
insert into class2 values(id,name);
-- 關閉游標
end loop;
close mc;
end;
create procedure p3()
begin
declare id int;
declare name varchar(15);
declare flag int default 0;
-- 聲明游標
declare mc cursor for select * from class;
declare continue handler for not found set flag = 1;
-- 打開游標
open mc;
-- 獲取結果
l2:loop
fetch mc into id,name;
if flag=1 then -- 當無法fetch會觸發handler continue
leave l2;
end if;
-- 這里是為了顯示獲取結果
insert into class2 values(id,name);
-- 關閉游標
end loop;
close mc;
end;
call p3();-- 不報錯
select * from class2;