use test_procedure ;
— 需求:输入一个部门名,查询该部门员工的编号、名字、薪资,将查询的结果集添加游标
delimiter $$
create procedure proc22(in in_name varchar(50))
begin
— 定义局部变量
declare var_empno int;
declare var_ename varchar(50);
declare var_sal decimal(7,2);
— 定义标记值
declare flag int default 1;
— 声明游标
declare my_cursor cursor for
select empno ,ename ,sal from emp e,dept d where d.dname=in_name ;
— 定义句柄,当数据未发现时将标记位设置为0
declare continue handler for not found set flag=0;
— 打开游标
open my_cursor;
— 通过游标获得值
label:loop
fetch my_cursor into var_empno,var_ename,var_sal;
if flag=1 then
select var_empno,var_ename,var_sal;
else
leave label;
end if;
end loop label;
— 关闭游标
close my_cursor;
end $$
delimiter ;
call proc22(‘销售部’);
— 用条件码
use test_procedure ;
— 需求:输入一个部门名,查询该部门员工的编号、名字、薪资,将查询的结果集添加游标
delimiter $$
create procedure proc23(in in_name varchar(50))
begin
— 定义局部变量
declare var_empno int;
declare var_ename varchar(50);
declare var_sal decimal(7,2);
— 定义标记值
declare flag int default 1;
— 声明游标
declare my_cursor cursor for
select empno ,ename ,sal from emp e,dept d where d.dname=in_name ;
— 定义句柄,当数据未发现时将标记位设置为0
declare continue handler for 1329 set flag=0;
— 打开游标
open my_cursor;
— 通过游标获得值
label:loop
fetch my_cursor into var_empno,var_ename,var_sal;
if flag=1 then
select var_empno,var_ename,var_sal;
else
leave label;
end if;
end loop label;
— 关闭游标
close my_cursor;
end $$
delimiter ;
call proc23(‘销售部’);